Introduction to PowerShell
Microsoft has developed a new command line interface (first called "Monad") and renamed "PowerShell". It was first made available as a stand-alone application for Windows XP ( ). and then for Vista ( . It is now a standard part of Windows 7. The older command interpreterPowerShell features
In the previous Windows command line described elsewhere on this site, commands consist of internal command strings that are interpreted and executed by the command interpreter or of commands that invoke separate executable files. PowerShell has a new approach that makes use of what Microsoft calls "cmdlets". Here is Microsoft's description: A cmdlet (pronounced "command-let") is a single-feature command that manipulates objects in Windows PowerShell. You can recognize cmdlets by their name format -- a verb and noun separated by a dash (-), such as Get-Help, Get-Process, and Start-Service.Although each cmdlet has a single function, groups of cmdlets can be strung together to carry out a complex task. Also the output of many cmdlets can be used as input (piped) to other cmdlets without additional processing. These capabilities represent a significant advance over the present command line shell.
PowerShell continues to recognize the commands from the older command shell although, in many cases, the command is an alias for a PowerShell cmdlet
List of cmdlets
At this time, PowerShell comes with 129 cmdlets. Since cmdlets are easily written, more can be expected. Table I shows the list of those presently available.Add-History
Add-Member
Add-PSSnapin
Clear-Content
Clear-Item
Clear-ItemProperty
Clear-Variable
Compare-Object
ConvertFrom-SecureString
Convert-Path
ConvertTo-Html
ConvertTo-SecureString
Copy-Item
Copy-ItemProperty
Export-Alias
Export-Clixml
Export-Console
Export-Csv
ForEach-Object
Format-Custom
Format-List
Format-Table
Format-Wide
Get-Acl
Get-Alias
Get-AuthenticodeSignature
Get-ChildItem
Get-Command
Get-Content
Get-Credential
Get-Culture
Get-EventLog
Get-ExecutionPolicy
Get-Help
Get-History
Get-Host
Get-Item
Get-ItemProperty
Get-Location
Get-Member
Get-PfxCertificate
Get-Process
Get-PSDrive
Get-PSProvider
Get-PSSnapin
Get-Service
Get-TraceSource
Get-UICulture
Get-Unique
Get-Variable
Get-WmiObject
Group-Object
Import-Alias
Import-Clixml
Import-Csv
Invoke-Expression
Invoke-History
Invoke-Item
Join-Path
Measure-Command
Measure-Object
Move-Item
New-Alias
New-Item
New-ItemProperty
New-Object
New-PSDrive
New-Service
New-TimeSpan
New-Variable
Out-Default
Out-File
Out-Host
Out-Null
Out-Printer
Out-String
Pop-Location
Push-Location
Read-Host
Remove-Item
Remove-ItemProperty
Remove-PSDrive
Remove-PSSnapin
Remove-Variable
Rename-Item
Rename-ItemProperty
Resolve-Path
Restart-Service
Resume-Service
Select-Object
Select-String
Set-Acl
Set-Alias
Set-Content
Set-Date
Set-ExecutionPolicy
Set-Item
Set-ItemProperty
Set-Location
Set-PSDebug
Set-Service
Set-TraceSource
Set-Variable
Sort-Object
Split-Path
Start-Service
Start-Sleep
Start-Transcript
Stop-Process
Stop-Service
Stop-Transcript
Suspend-Service
Tee-Object
Test-Path
Trace-Command
Update-FormatData
Update-TypeData
Where-Object
Write-Debug
Write-Error
Write-Host
Write-Output
Write-Progress
Write-Verbose
Write-Warning
PowerShell Cmdlet syntax
There are a number of parameters possible for cmdlets and a detailed discussion of syntax is beyond our scope. I will try to hint at the range of possibilities by discussing one useful cmdlet that carries out the copying function. It is not limited to copying files and folders but can also copy Registry keys and entries. This one cmdlet, in fact, incorporates the functions of several older
commands with greater flexibility. First, here is a simple example where a folder and all its contents are to be copiedCopy-Item C:\Logfiles -destination D:\Backup -recurse This cmdlet copies all files and sub-folders in the folder C:\Logfiles to the folder
D:\Backup .The parameter "-recurse" is used when sub-folders are to be copied.
Next, here are all the parameters in their full glory: Copy-Item [-path] <string[]> [[-destination] <string>] [-container] [-recurse] [-force] Naturally, the full set of parameters varies from one cmdlet to the next but one option that is common to many is the intriguing
"-whatIf". This setting describes what would happen if you executed the command but without actually executing it .This allows you to see safely what would happen if you did the command. For a table describing the various parameters above, click
here.
[-include
<string[]>] [-exclude <string[]>] [-filter <string>] [-passThru] [-credential <PSCredential>] [-whatIf] [-confirm] [<CommonParameters>]
PowerShell Scripting
PowerShell is also the basis for a scripting language. This language is intended to make administrative tasks easier and seems likely to supplant VBScript in the future. The extension for PowerShell scripts is .PS1. Many security features are built into the scripting engine and the default setting is to prevent scripts from running. Permission to run scripts is controlled by a feature
called "Execution Policy". Information about this feature can be obtained by the PowerShell commandGet-Help about_signing More about PowerShell scripting can be found at this Microsoft site.
