Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

My biggest issue with powershell is how undiscoverable it is. Good luck doing anything without searching for commands in a web browser.

But maybe that's just a result if it being so new. 'ls' has been around for almost 50 years...

What it really feels like is a complete programming language inside of notepad.exe because of the historically terrible windows command prompt.



I've mentioned this in other Powershell HN threads but you might want to try these two commands to make discoverability much better IMHO:

Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete

Set-PSReadLineOption -ShowToolTips

Also note that you can get in-console help on most commands without having to go out to a web browser. On the ones I've tried, examples are also included which help output too.

Help will also list available commands; eg:

help json

Shows me the three commands available from my shell: ConvertFrom-Json, ConvertTo-Json and Test-Json.

There is also Get-Command, which you can filter for command discovery, ie:

Get-Command | where Name -Like "Json"

The advantage to PowerShell being object-based here is that if you press <TAB> after typing where, the list of completions you get will include the properties that are in the object returned as the result of Get-Command.

I also use Cmder for a much nicer console than cmd.exe. I haven't tried the latest version of the new Windows Terminal but I hear it's also nice.


Thanks for the tips.


> My biggest issue with powershell is how undiscoverable it is

This surprises me as I feel exactly the opposite.

I may not know how to manage X via PowerShell, but I know those pre-approved verbs like Get/Set/New/Test/Convert etc. Then I know commands from same module usually start with some abbreviation like Get-Net.... Then I can tab throguth commands.

Or just Get-Module (to see loaded/available modules) and then Get-Command -ModuleName x or just help tcp. And if "help Get-NetTCPSetting -Full" won't help, yeah, fallback to google.

Example. Now how would I set an IP address for an interface not having an idea? (where you see italicized, actually there are star-wildcard around the word)

1. help ip (ohh, too much results)

2. help set-ip - alright, Set-NetIPAddress

3. help Set-NetIPAddress -Examples (seems I need to specify some interface. It is probably at Get-NetIPInter<TAB> - ahh, gives me Get-NetIPInterface, here you are.)

4. Get-NetIPInterface

5. Set-NetIPInterface -<TAB><TAB><TAB> (autocompletes arguments and I choose which I would like to set or not)


Yes, but, POSIX shells aren’t that much more discoverable, either.

It takes loads of reading and trial and error to become competent in any command line.


The worst/easiest to fix discoverability problem with Microsoft prompts is that they show you a single completion on tab and cycle through them on every subsequent tab, which is a lot more confusing than being shown all the options, in my opinion.


I would argue that the strict posix shell (with all its limitations) can be learnt in an afternoon or two and a lot of it will be also useful in general in the OS. like utilities and their inputs and outputs. it's mostly reusing/duct taping existing programs, so it's not a vacuum like a DSL. I hope it has excellent man pages to be usable. the BSDs have...


If you know “get-command”, “get-member” and “help”, it’s quite discoverable.


I'd say it's not any less discoverable than the typical Unix shell, plus readability is guaranteed when coming across scripts written by someone else. Crypticism is culturally out of place in Powershell, and I think this is its best feature.

PS: the ISE (Integrated Scripting Environment) helps when writing scripts.


I'm sure it's fine if you live in it all the time but if you only use it occasionally it becomes hard work.


> But maybe that's just a result if it being so new. 'ls' has been around for almost 50 years...

Even so, I don't think we can use that excuse given that it was released over 13 years ago...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: