Before starting with PowerCLI I would like to introduce Windows PowerShell. The reason is that PowerCLI is built on top of PowerShell.
PowerShell 3.0 can be downloaded from the following link:
The first building block of PS is cmdlet (command-let). There is a default set of cmdlets which is available with the installation of PS 2.0 (core library of PS 2.0). Other technologies are having their own set of cmdlets (their own libraries and PS modules). To have them integrated with PS, they should be added as snap-ins (e.g. VMware PowerCLI which we will cover later).
Whether cmdlet from core library is used or from third party module, the same cmdlet structure is always followed.
Cmdlets always consist of a verb-noun compound phrase separated by a hyphen. In the previous example, Get-ChildItem, the Get (verb) part of the command directs the action; in this case, to retrieve data. The ChildItem (noun) part of the command provides the focus for the verb; in the example, to obtain a directory listing.
Note: Cmdlets are case in-sensitive
Most PowerShell cmdlets support one or more parameters and arguments (parameters with arguments are called named parameters). A parameter represents additional data that is passed into a cmdlet to customize its operation. An argument is nothing more than a value that is passed to a parameter.
Note: Some parameters aren't having '-'. Also, not all parameters require arguments which are called positional parameters.
- get-help <xxx>, where xxx is any keyword within cmdlet syntax
This will list all cmdlets which includes xxx in their syntax
- get-command <aaa>, where aaa is cmdlet syntax
This will show all the parameters and arguments which can be assigned to the cmdlet
- get-help * will list all commands
PS C:\Users\mohammed.albaqari> get-help restart
Name Category Synopsis
---- -------- --------
Restart-Service Cmdlet Stops and then starts one or more services.
Restart-Computer Cmdlet Restarts ("reboots") the operating system on local and remote computers.
PS C:\Users\mohammed.albaqari> get-command restart-service
CommandType Name Definition
----------- ---- ----------
Cmdlet Restart-Service Restart-Service [-Name] <String> [-Force] [-Pa...
Here are some common verbs used in cmdlets:
The second important block of PS is pipeline. The pipeline concept allow passing the result of one cmdlet as an argument to the second cmdlet. Therefore, the pipeline enables us to create compound cmdlet sequences that perform multiple tasks in a single operation. Take a look at the following example:
PS provide alias shortcuts to cmdlets. Those can be system-defined or user-defined. You can verify the available aliases using the cmdlet Get-Alias. Also, you can create user-defined alias using Set-Alias cmdlet.
It is a text file with the following characteristics:
- It has the .ps1 file extension
- It contains one or more lines of PowerShell source code.
PS Scripts aren't compiled at run-time but rather interpreted, line-by-line, by the PowerShell interpreter. Therefore, you will need PS on the target system which is running the script.
PS scripts are written using PS Integrated Scripting Environment (ISE). PS ISE has three viewing panes used for the following purposes:
- Script Pane: Enables you to edit your PowerShell scripts
- Output Pane: Displays the output from your scripts
- Command Pane: Enables you to issue PowerShell statements interactively
To run a PS script from outside PS ISE, we need to set the appropriate script execution policy. There are four modes for script execution policy:
- Restricted: Windows PowerShell can be used only in interactive mode from a PowerShell prompt or from an ISE. Scripts aren't allowed to run freely on the host.
- AllSigned: Only scripts that are digitally signed by a trusted publisher are allowed to run
- RemoteSigned: Locally created scripts can run fine; downloaded scripts must be digitally signed by a trusted publisher in order to run
- Unrestricted: All PowerShell scripts can run without restriction (not recommended for most environments)
You can use the command Set-ExecutionPolicy to change the current policy and Get-ExecutionPolicy to view the current policy.
To run the scripts, different methods can be used:
- From windows command prompt navigate to the script and type its name (e.g. C:\Scripts\<script.ps1> )
- From PS ISE use Invoke-Expression command (e.g. PS> Invoke-Expression “C:\Scripts\<script>.ps1”)