Suggestion: Too much info in Get-Help on each parameter
Getting the 6-7 lines of extra info on each parametermay sometimes be helpful, but not the first few times you call up help, and probably not most of the time afterward. Perhaps it can be saved for a -verbose switch or something similar. Replacing these somewhat extraneous parameters with an example or two (when appropriate) would be a good idea.
August 1st, 2006 4:33am

This is a great suggestion---one that you'll actually see implemented in the final Exchange and PowerShell bits :) We didn't get the changes done in time for Beta 2, but this is what you'll actually see if you just run help (using the cmdlet get-help as an example). As you can see below, you have the option of having full help, detailed help, just parameters, or just examples. Keep the greatfeedback coming! Thanks, ~vivek SYNOPSIS Displays information about Windows PowerShell cmdlets and concepts. SYNTAX Get-Help [[-name] <string>] [-component <string[]>] [-functionality <string[]>] [-role <string[ ]>] [-category <string[]>] [-full] [<CommonParameters>] Get-Help [[-name] <string>] [-component <string[]>] [-functionality <string[]>] [-role <string[ ]>] [-category <string[]>] [-detailed] [<CommonParameters>] Get-Help [[-name] <string>] [-component <string[]>] [-functionality <string[]>] [-role <string[ ]>] [-category <string[]>] [-examples] [<CommonParameters>] Get-Help [[-name] <string>] [-component <string[]>] [-functionality <string[]>] [-role <string[ ]>] [-category <string[]>] [-parameter <string>] [<CommonParameters>] DETAILED DESCRIPTION Displays information about Windows PowerShell cmdlets and concepts. You can also use "Help {<cm dlet name> | <topic-name>" or "<cmdlet-name> /?". "Help" displays the help topic one page at a time. The "/?" displays help for cmdlets on a single page. RELATED LINKS Get-Command REMARKS For more information, type: "get-help Get-Help -detailed". For technical information, type: "get-help Get-Help -full".
Free Windows Admin Tool Kit Click here and download it now
August 1st, 2006 7:21am

That's great, and thanks for listening seriously to our feedback! I think the parameters themselves and their descriptions are pretty useful. It's the stuff afterwards that's extraneous. This stuff - Parameter required? falseParameter position? namedParameter type System.String[]Default valueAccept multiple values? trueAccepts pipeline input? falseAccepts wildcard characters? false The different levels of verbosity will be great. You might want to keep the essential parameters in the unswitched help command as well, though, with just a quick line of description. It's also good to see that the ubiqitous parameters have been removed from the SYNTAX section. Those just muddle things up, at least at the basic level. I know you're Microsoft and all, but the format of Unix man pages would be a good place to start (it looks very much like they're an influence already). In a typical man page, you get a one-line description of the parameter, with further detailsfurther down the page, where necessary. On the topic of man pages, a better pager than "more" would be really welcome! Something like "less".
August 2nd, 2006 2:39am

I hear you. The new help work gives you what you want. Here is what you get when you ask for help -detailed: PS> get-help get-process -det NAME Get-Process SYNOPSIS Gets the processes that are running on the local computer. SYNTAX Get-Process [[-name] <string[]>] [<CommonParameters>] Get-Process -id <Int32[]> [<CommonParameters>] Get-Process -inputObject <Process[]> [<CommonParameters>] DETAILED DESCRIPTION The Get-Process cmdlet retrieves a process object for each process. With he processes on the computer, as though you typed "Get-Process *". You c ocess name or process ID (PID), or by using the -InputObject parameter t e to Get-Process. For Get-Process, the default method is by process name y process ID. PARAMETERS -name <string[]> Specifies one or more processes by process name. You can type multip se wildcard characters. The parameter name ("-Name") is optional. -inputObject <Process[]> Specifies one or more processes by passing their process objects. Yo s of one Get-Process command to another Get-Process command. If you you can use -InputObject to present the variable to Get-Process. Ho is not typed in the command. Instead, when you pass an object throu tes the passed object with the InputObject parameter. -id <Int32[]> Specifies one or more processes by process ID (PID). To specify mult o find the PID of a process, type "get-process". <CommonParameters> This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. For more information type, "get-help about_ubiquitous_parameters". -------------------------- EXAMPLE 1 -------------------------- C:\PS>Get-Process This command gets a list of all of the running processes running on the lumn, see Additional Notes in "Get-Help Get-Process -full." -------------------------- EXAMPLE 2 -------------------------- C:\PS>Get-Process winword, explorer | format-list * This command gets all available data about the Winword and Explorer proc rameter to specify the processes, but it omits the optional parameter na ta to the Format-List cmdlet, which displays all available properties (* ts. You can also identify the processes by their process IDs. For example, " -------------------------- EXAMPLE 3 -------------------------- C:\PS>get-process | where-object {$_.WorkingSet -gt 20000000} This command gets all processes that have a working set greater than 20 ll running processes. The pipeline operator (|) passes the process objec s only the object with a value greater than 20,000,000 bytes for the Wor WorkingSet is one of many properties of process objects. To see all of t er". By default, the values of all amount properties are in bytes, even lobytes and megabytes. -------------------------- EXAMPLE 4 -------------------------- C:\PS>$a = get-process get-process -inputobject $a | format-table -view priority These commands list the processes on the computer grouped by priority. T on the computer and stores them in the $a variable. The second command u process objects stored in $a to Get-Process. The pipeline operator passe hich formats the processes by using the "Priority" view defined in the P l home directory ($pshome). REMARKS For more information, type: "get-help Get-Process -detailed". For technical information, type: "get-help Get-Process -full". PS> get-help get-process -detailed NAME Get-Process SYNOPSIS Gets the processes that are running on the local computer. SYNTAX Get-Process [[-name] <string[]>] [<CommonParameters>] Get-Process -id <Int32[]> [<CommonParameters>] Get-Process -inputObject <Process[]> [<CommonParameters>] DETAILED DESCRIPTION The Get-Process cmdlet retrieves a process object for each process. Wit hout parameters, "Get-Process" gets all of the processes on the compute r, as though you typed "Get-Process *". You can also identify a particu lar process by process name or process ID (PID), or by using the -Input Object parameter to pass a process object through the pipeline to Get-P rocess. For Get-Process, the default method is by process name. For Sto p-Process, the default method is by process ID. PARAMETERS -name <string[]> Specifies one or more processes by process name. You can type multi ple process names (separated by commas) or use wildcard characters. The parameter name ("-Name") is optional. -inputObject <Process[]> Specifies one or more processes by passing their process objects. Y ou can use this parameter to pass the results of one Get-Process co mmand to another Get-Process command. If you save the output of a c ommand in a variable, you can use -InputObject to present the varia ble to Get-Process. However, typically, the InputObject parameter i s not typed in the command. Instead, when you pass an object throug h the pipeline, Windows PowerShell associates the passed object wit h the InputObject parameter. -id <Int32[]> Specifies one or more processes by process ID (PID). To specify mul tiple IDs, use commas to separate the IDs. To find the PID of a pro cess, type "get-process". <CommonParameters> This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. For more informatio n, type, "get-help about_ubiquitous_parameters". -------------------------- EXAMPLE 1 -------------------------- C:\PS>Get-Process This command gets a list of all of the running processes running on the local computer. For a definition of each column, see Additional Notes in "Get-Help Get-Process -full." -------------------------- EXAMPLE 2 -------------------------- C:\PS>Get-Process winword, explorer | format-list * This command gets all available data about the Winword and Explorer pro cesses on the computer. It uses the -Name parameter to specify the proc esses, but it omits the optional parameter name. The pipeline operator (|) passes the data to the Format-List cmdlet, which displays all avail able properties (*) of the Winword and Explorer process objects. You can also identify the processes by their process IDs. For example, "Get-Process -id 664, 2060". -------------------------- EXAMPLE 3 -------------------------- C:\PS>get-process | where-object {$_.WorkingSet -gt 20000000} This command gets all processes that have a working set greater than 20 MB. It uses the Get-Process cmdlet to get all running processes. The p ipeline operator (|) passes the process objects to the Where-Object cmd let, which selects only the object with a value greater than 20,000,000 bytes for the WorkingSet property. WorkingSet is one of many properties of process objects. To see all of the properties, type "Get-Process | Get-Member". By default, the values of all amount properties are in bytes, even though the default display lists them in kilobytes and megabytes. -------------------------- EXAMPLE 4 -------------------------- C:\PS>$a = get-process get-process -inputobject $a | format-table -view priority These commands list the processes on the computer grouped by priority. The first command gets all of the processes on the computer and stores them in the $a variable. The second command uses the -InputObject param eter to pass the process objects stored in $a to Get-Process. The pipel ine operator passes the objects to the Format-Table cmdlet, which forma ts the processes by using the "Priority" view defined in the PS1XML for mat files in the Windows PowerShell home directory ($pshome). REMARKS For more information, type: "get-help Get-Process -detailed". For technical information, type: "get-help Get-Process -full". Get-Help -FULL gives you the content you get today. You can also do "Get-Help -Example" to get just the examples. You can also ask for detailed parameter info on specific parameters: PS> get-help get-process -parameter i* -inputObject <Process[]> Specifies one or more processes by passing their process objects. You c an use this parameter to pass the results of one Get-Process command to another Get-Process command. If you save the output of a command in a variable, you can use -InputObject to present the variable to Get-Proce ss. However, typically, the InputObject parameter is not typed in the c ommand. Instead, when you pass an object through the pipeline, Windows PowerShell associates the passed object with the InputObject parameter. Required? true Position? named Default value Accept pipeline input? true (ByValue) Accept wildcard characters? false -id <Int32[]> Specifies one or more processes by process ID (PID). To specify multipl e IDs, use commas to separate the IDs. To find the PID of a process, ty pe "get-process". Required? true Position? named Default value null Accept pipeline input? true (ByPropertyName) Accept wildcard characters? false 10,000 thanks go to the Exchange team for sponsoring and driving the changes into V1. It is a completely different feature due to them. Jeffrey Snover [MSFT]Windows PowerShell/Aspen ArchitectVisit the Windows PowerShell Team blog at: http://blogs.msdn.com/PowerShellVisit the Windows PowerShell ScriptCenter at: http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx
Free Windows Admin Tool Kit Click here and download it now
August 2nd, 2006 10:22am

Great. You guys have done a great job with PowerShell. I'm really looking forward to using it more and more. A little off topic, but will there be an SSH service built into Windows Server Longhorn? With all the new ability to do things from the command line, a quick method of accessing the CLI remotely would be really handy.
August 2nd, 2006 3:42pm

Jeffrey,I'm a little puzzled. My excuse it's early in the morning and the first cup of coffee hasn't kicked in yet. :)What's the difference in effect betweenget-help get-process -detand get-help get-process-detailed? The results I see seem to be the same (other than the red highlighting).I am a little dubious about "detailed" as the parameter name. Somehow "detailed" for what, if I understand you correctly is not a fully detailed version of Help seems an inappropriate, and potentially misleading, term. What about "-summary" or "-summarized"?I really like the new -parameter parameter for get-help.A minor point - it seems odd to include in Remarks information that tells the user that they will get "more" information if they type "get-help get-process -detailed" since that's just what they've done. They won't get "more" information. Some term that's absolute not comparative would be better, I suggest.But the newer Help layout looks a distinct improvement on what exists in the present public builds.Andrew Watt MVP
Free Windows Admin Tool Kit Click here and download it now
August 10th, 2006 10:53am

> will there be an SSH service built into Windows Server Longhorn? No. A number of people have used WIndows PowerShell with existing SSH implemenations but there are no plans for Microsoft to deliver one as part of Windows. Remoting will be the major focus for our V1.1 release but no further details are available at this time. Jeffrey Snover [MSFT]Windows PowerShell/Aspen ArchitectVisit the Windows PowerShell Team blog at: http://blogs.msdn.com/PowerShellVisit the Windows PowerShell ScriptCenter at: http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx
August 10th, 2006 6:46pm

The following are all equivalent to PowerShell: Get-Help -DetGet-Help -DetaGet-Help -DetaiGet-Help -DetailGet-Help -DetaileGet-Help -Detailed because each of these is an unambigious match. Here is what you get if you try -de: PS> get-help -deGet-Help : Parameter cannot be processed because the parameter name 'de'is ambiguous. Possible matches include: -Detailed -Debug.At line:1 char:9+ get-help <<<< -de Thanks for the input on the command design. We are pretty much locked for V1. Jeffrey Snover [MSFT]Windows PowerShell/Aspen ArchitectVisit the Windows PowerShell Team blog at: http://blogs.msdn.com/PowerShellVisit the Windows PowerShell ScriptCenter at: http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx
Free Windows Admin Tool Kit Click here and download it now
August 10th, 2006 6:52pm

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics