Open table as spreadsheet
|
To |
Do This |
|---|---|
|
Use an external command-line utility |
Type the
|
|
Use multiple external command-line utilities sequentially |
Separate each command-line utility with a semicolon on a single Windows PowerShell line |
|
Obtain a list of running processes |
Use the Get-Process cmdlet |
|
Stop a process |
Use the Stop-Process cmdlet and specify either the name or the process ID as an argument |
|
Model the effect of a cmdlet before actually performing the
|
Use the -whatif argument |
|
Instruct Windows PowerShell to startup, run a cmdlet, and then exit |
Use the PowerShell command while prefixing the cmdlet with the ampersand sign and enclosing the name of the cmdlet in curly brackets |
|
Prompt for confirmation before stopping a process |
Use the Stop-Process cmdlet while specifying the -confirm argument |
Download CD Content
After completing this chapter, you will be able to:
Understand the basic use of Microsoft Windows PowerShell cmdlets
Use Get-Command to retrieve a listing of cmdlets
Configure search options
Configure output parameters
Use Get-Member
Use New-Object
The inclusion of a large amount of cmdlets in Windows PowerShell makes it immediately useful to network administrators and others who need to perform various maintenance and administrative
In Chapter 1, Overview of Windows PowerShell, we learned about using the various help utilities available that
| Tip |
Typing long cmdlet
|
Because the cmdlets return objects instead of “string values,” we can obtain additional information about the returned objects. The additional information would not be available to us if we were working with just string data. To do this, we can use the pipe character () to take information from one cmdlet and feed it to another cmdlet. This may seem complicated, but it is actually quite simple and, by the end of this chapter, will seem quite natural. At the most basic level, consider obtaining a directory listing; after you have the directory listing, perhaps you would like to format the way it is displayed-as a table or a list. As you can see, these are two separate operations: obtaining the directory listing, and formatting the list. The second task will take place on the right side of the pipe.
In Chapter 1, we used the
dir
command to obtain a listing of all the files in a directory. This works because there is an alias built into Windows PowerShell that
| Just the Steps |
Obtaining a directory listing In a Windows PowerShell prompt, enter the Get-ChildItem cmdlet followed by the directory to list. Example:
get-childitem C:\ |
In Windows PowerShell, there actually is no cmdlet called
dir
, nor does it actually use the
dir
command. The alias
dir
is associated with the
Get-ChildItem
cmdlet. This is why the output from
dir
is different in Windows PowerShell than in the CMD.exe interpreter. The alias
dir
is used when we use the
PS C:\> get-alias dir CommandType Name Definition ----------- ---- ---------- Alias dir Get-ChildItem
If you use the Get-ChildItem cmdlet to obtain the directory listing, it will obtain a listing the same as dir because dir is simply an alias for Get-ChildItem . This is shown here:
PS C:\> get-childitem C:\ Directory: Microsoft.PowerShell.Core\FileSystem::C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 7/2/2006 3:14 PM audioBOOK d---- 11/4/2006 4:57 AM Documents and Settings d---- 2/6/2006 4:49 PM DsoFile d---- 9/5/2006 2:30 PM fso d---- 11/30/2006 2:08 PM fso1 d---- 7/21/2006 6:08 AM fso2 d---- 12/2/2005 5:41 AM German d---- 9/24/2006 1:54 AM music d---- 12/10/2006 6:54 AM mytest d---- 12/13/2006 8:30 AM OutlookMail d-r-- 11/20/2006 6:44 PM Program Files d---- 7/16/2005 2:52 PM RAS d---- 1/30/2006 11:30 AM smartPhone d---- 11/2/2006 1:35 AM Temp d---- 8/31/2006 9:48 AM Utils d---- 1/30/2006 11:10 AM vb05sbs d---- 12/5/2006 8:01 AM WINDOWS -a--- 12/8/2006 7:24 PM 22950 a.txt -a--- 12/5/2006 8:48 AM 23902 alias.txt -a--- 7/16/2005 1:39 PM 0 AUTOEXEC.BAT -a--- 11/7/2006 3:09 PM 3988 bar.emf --r-s 8/27/2006 9:37 PM 211 boot.ini -a--- 12/3/2006 7:36 AM 21228 cmdlets.txt -a--- 12/13/2006 9:44 AM 273612 commandHelp.txt -a--- 12/10/2006 7:34 AM 21228 commands.txt -a--- 7/16/2005 1:39 PM 0 CONFIG.SYS -a--- 12/7/2006 3:14 PM 8261 mySheet.xls -a--- 12/7/2006 5:29 PM 2960 NetDiag.log -a--- 12/5/2006 8:29 AM 16386 notepad -a--- 6/3/2006 2:11 PM 102 Platform.ini -a--- 12/7/2006 5:29 PM 10670 tshoot.txt -a--- 12/4/2006 9:09 PM 52124 VistaResKitScripts.txt
If you were to use Get-Help and then dir , you would receive the same output as if you were to use Get-Help Get-ChildItem . In Windows PowerShell, the two can be used in exactly the same fashion.
| Just the Steps |
Formatting a directory listing using
get-childitem C:\ format-list |
Start Windows PowerShell by using
Start Run Windows PowerShell
. The PowerShell prompt will
Use the Get-ChildItem cmdlet to obtain a directory listing of the C:\ directory.
get-childItem C:\
Use the Format-List cmdlet to arrange the output of Get-ChildItem.
get-childitem format-list
Use the -property argument of the Format-List cmdlet to retrieve only a listing of the name of each file in the root.
get-childitem C:\ format-list -property name
Use the property argument of the Format-List cmdlet to retrieve only a listing of the name and length of each file in the root.
get-childitem C:\ format-list -property name, length
In the same way that we use the Format-List cmdlet to produce an output in a list, we can use the Format-Wide cmdlet to produce a more compact output.
| Just the Steps |
Formatting a directory listing using Format-Wide In a Windows PowerShell prompt, enter the Get-ChildItem cmdlet followed by the directory to list followed by the pipe character and the Format-Wide cmdlet. Example:
get-childitem C:\ format-wide |
{% if main.adsdop %}{% include 'adsenceinline.tpl' %}{% endif %}
Start Windows PowerShell by using Start Run Windows PowerShell . The PowerShell prompt will open by default at the root of your Documents And Settings.
Use the Get-ChildItem cmdlet to obtain a directory listing of the C:\Windows directory.
get-childitem C:\Windows
Use the -recursive argument to cause the Get-ChildItem cmdlet to walk through a nested directory structure, including only .txt files in the output.
get-childitem C:\Windows -recurse -include *.txt
A partial output from the command is shown here:
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\Driver Cache Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/26/2004 6:29 AM 13512 yk51x86.txt Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\Help\Tours\mmTo ur Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 8/4/2004 8:00 AM 807 intro.txt -a--- 8/4/2004 8:00 AM 407 nav.txt -a--- 8/4/2004 8:00 AM 747 segment1.txt -a--- 8/4/2004 8:00 AM 772 segment2.txt -a--- 8/4/2004 8:00 AM 717 segment3.txt -a--- 8/4/2004 8:00 AM 633 segment4.txt -a--- 8/4/2004 8:00 AM 799 segment5.txt
Use the
Format-Wide
cmdlet to adjust the output from the
Get-ChildItem
cmdlet. Use the -
get-childitem C:\Windows -recurse -include *.txt format-wide -column 3
Once this command is run, you will see an output similar to this:
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\Driver Cache yk51x86.txt Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\Help\Tours\mmTo ur intro.txt nav.txt segment1.txt segment2.txt segment3.txt segment4.txt segment5.txt Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\Microsoft.NET\F ramework\v1.1.4322\1033 SetupENU1.txt SetupENU2.txt Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\Microsoft.NET\F ramework\v2.0.50727\Microsoft .NET Framework 2.0 eula.1025.txt eula.1028.txt eula.1029.txt eula.1030.txt eula.1031.txt eula.1032.txt eula.1033.txt eula.1035.txt eula.1036.txt eula.1037.txt eula.1038.txt eula.1040.txt eula.1041.txt eula.1042.txt eula.1043.txt eula.1044.txt eula.1045.txt eula.1046.txt eula.1049.txt eula.1053.txt eula.1055.txt eula.2052.txt eula.2070.txt eula.3076.txt eula.3082.txt
Use the
Format-Wide
cmdlet to adjust the output from the
Get-ChildItem
cmdlet. Use the property argument to specify the name property, and
get-childitem C:\Windows -recurse -include *.txt format-wide -property name -groupby length -column 3
A partial output is shown here. Note that although three columns were specified, if there are not three files of the same length, only one column will be used:
Length: 13512 yk51x86.txt Length: 807 intro.txt Length: 407 nav.txt Length: 747 segment1.txt
| Just the Steps |
Formatting a directory listing using Format-Table In a Windows PowerShell prompt, enter the Get-ChildItem cmdlet followed by the directory to list followed by the pipe character and the Format-Table cmdlet. Example:
get-childitem C:\ format-table |
Start the Windows PowerShell by using Start Run Windows PowerShell . The PowerShell prompt will open by default at the root of your Documents And Settings.
Use the Get-ChildItem cmdlet to obtain a directory listing of the C:\Windows directory
get-childitem C:\Windows
Use the -recursive argument to cause the Get-ChildItem cmdlet to walk through a nested directory structure, include only .txt files in the output.
get-childitem C:\Windows -recurse -include *.txt
Use the Format-Table cmdlet to adjust the output from the Get-ChildItem cmdlet. This is shown here:
get-childitem C:\Windows -recurse -include *.txt format-table
The command results in the creation of a table, as follows:
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\Driver Cache Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/26/2004 6:29 AM 13512 yk51x86.txt Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\Help\Tours\mmTo ur Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 8/4/2004 8:00 AM 807 intro.txt -a--- 8/4/2004 8:00 AM 407 nav.txt -a--- 8/4/2004 8:00 AM 747 segment1.txt -a--- 8/4/2004 8:00 AM 772 segment2.txt -a--- 8/4/2004 8:00 AM 717 segment3.txt -a--- 8/4/2004 8:00 AM 633 segment4.txt -a--- 8/4/2004 8:00 AM 799 segment5.txt Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\Microsoft.NET\F ramework\v1.1.4322\1033 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 3/6/2002 2:36 PM 38 SetupENU1.txt -a--- 3/6/2002 2:36 PM 38 SetupENU2.txt
Use the -property argument of the Format-Table cmdlet and choose the name, length, and last-write-time properties. This is shown here:
get-childitem C:\Windows -recurse -include *.txt format-table -property name, length, lastwritetime
This command results in producing a table with the name, length, and last write time as column headers. A sample of this output is shown here:
Name Length LastWriteTime ---- ------ ------------- yk51x86.txt 13512 11/26/2004 6:29:00 AM intro.txt 807 8/4/2004 8:00:00 AM nav.txt 407 8/4/2004 8:00:00 AM segment1.txt 747 8/4/2004 8:00:00 AM segment2.txt 772 8/4/2004 8:00:00 AM segment3.txt 717 8/4/2004 8:00:00 AM segment4.txt 633 8/4/2004 8:00:00 AM