In this session I will talk about the three important cmdlets which are useful through out your PowerShell journey and will help us to explore various cmdlets and its usage.
Predominantly the cmdlets below are being used by most of the PowerShell folks, they be a beginner or be an export, they must use these cmdlets to explore various modules and cmdlets through out their PowerShell journey.
Now let’s see what are those cmdlets…
Get-Command
cmdlet is used to get all the cmdlets, functions, aliases, applications and etc, which are installed on the computer. However there are bunch of parameters that can be used with Get-Command
to filter your output, with the combination of various parameters, you can get all the cmdlets, or you can get only the imported cmdlets, or with some specific name, verb or alias, or even non PowerShell commands as well.
As we discussed earlier, you don’t need to memorize any cmdlets, because Get-Command
will help you to get the required cmdlets based on the requirement using the wildcards, for suppose you want to work with ip addresses like to get an ip address or set an ip address and you don’t know which cmdlet that you need use or you forgot the cmdlet, then you can simply use Get-Command
using the "*ipaddress*"
wildcard to get the required cmdlets and in which you can easily identify the required cmdlet and pick it up for your need, now let’s see how…
Get-Command *ipaddress*
Output:
CommandType Name Version Source
----------- ---- ------- ------
Function Get-NetIPAddress 1.0.0.0 NetTCPIP
Function New-NetIPAddress 1.0.0.0 NetTCPIP
Function Remove-NetIPAddress 1.0.0.0 NetTCPIP
Function Set-NetIPAddress 1.0.0.0 NetTCPIP
As I said earlier, it is easy to identify the cmdlet by looking at the cmdlet name itself and we can judge what that cmdlet does, like Get-NetIPAddress
is used to get the ip address or Set-NETIPAddress
is used to set the ip address.
I tried to give you a complete set of examples in how to use Get-Command
in the reference page, and I request you to go through all the examples and practice thoroughly.
After you identified the cmdlet if you want to know how to use the cmdlet you can refer the cmdlet help on the screen itself by using the Get-Help
cmdlet.
PowerShell maintains a help system locally, and Get-Help
is used fetch the help of various commands and topics. By default without any other parameter other than the -Name
parameter, it will display the basic help, and -Detailed
or -Full
parameters will add more info on top of the basic help, and -Examples
parameter will display all the examples on the cmdlet/function available in the help source, and with -Online
parameter it will open the updated/latest help available in the online sources. Now let’s see how to get the basic help of any cmdlet…
Get-Help -Name Get-Disk
# or
Get-Disk -?
Output:
NAME
Get-Disk
SYNOPSIS
Gets one or more disks visible to the operating system.
SYNTAX
Get-Disk [[-Number] <UInt32[]>] [-CimSession <CimSession[]>] [-ThrottleLimit <Int32>] [<CommonParameters>]
Get-Disk [-CimSession <CimSession[]>] [-FriendlyName <String[]>] [-SerialNumber <System.String[]>] [-ThrottleLimit <Int32>] [<CommonParameters>]
Get-Disk [-CimSession <CimSession[]>] [-ThrottleLimit <Int32>] [-VirtualDisk <CimInstance>] [<CommonParameters>]
Get-Disk [-CimSession <CimSession[]>] [-Partition <CimInstance>] [-ThrottleLimit <Int32>] [<CommonParameters>]
Get-Disk [-CimSession <CimSession[]>] [-iSCSISession <CimInstance>] [-ThrottleLimit <Int32>] [<CommonParameters>]
Get-Disk [-CimSession <CimSession[]>] [-iSCSIConnection <CimInstance>] [-ThrottleLimit <Int32>] [<CommonParameters>]
Get-Disk [-CimSession <CimSession[]>] [-Path <String[]>] [-ThrottleLimit <Int32>] [<CommonParameters>]
Get-Disk [-CimSession <CimSession[]>] [-ThrottleLimit <Int32>] [-UniqueId <String[]>] [<CommonParameters>]
Get-Disk [-StorageJob <CimInstance>] [<CommonParameters>]
Get-Disk [-StorageNode <Microsoft.Management.Infrastructure.CimInstance>] [<CommonParameters>]
Get-Disk [-StorageSubSystem <Microsoft.Management.Infrastructure.CimInstance>] [<CommonParameters>]
DESCRIPTION
The Get-Disk cmdlet gets one or more Disk objects visible to the operating system, or optionally a filtered list.
RELATED LINKS
Online Version: http://go.microsoft.com/fwlink/?LinkId=812860
Where-Object
Clear-Disk
Get-Partition
Get-StorageJob
Get-StorageSubSystem
Initialize-Disk
Set-Disk
Update-Disk
REMARKS
To see the examples, type: "Get-Help Get-Disk -Examples"
For more information, type: "Get-Help Get-Disk -Detailed"
For technical information, type: "Get-Help Get-Disk -Full"
For online help, type: "Get-Help Get-Disk -Online"
You can also use
help
andman
aliases in the place ofGet-Help
, but it displays the help page by page and one page at a time and even you can use<cmdlet> -?
to display the help, but it only works with the cmdlets.
PowerShell has an ability to auto generate the help for your cmdlet/function based on the information available in the cmdlet or the function. PowerShell uses various methods to fetch the information and generate the help, it uses comment based help with in the cmdlet/function, local help files or any online sources to generate the help.
Update-Help
will update your local copy of help with the latest help available in the online source. It is ideally good to run in theUpdate-Help
periodically to update your local help.
There are various about topics in PowerShell starts with about_
, which will give you detailed understanding of that topic. For example run Get-Help about_Variables
to know about the variables in PowerShell, and to see all the help topics run Get-Help about_*
.
I have given a complete set of Get-Help
examples in the reference page and please practice thoroughly.
Before I actually talk about the Get-Member
cmdlet, I should talk about the objects in PowerShell. PowerShell treats everything as an object with reference to a .Net class, in-fact in PowerShell there are no data types rather they are called object types, even so called the int, string, double, float and boolean data types in other languages are called object types in PowerShell. So when you say anything is an object it should have some properties and methods and together called members of the object. Properties represents the object in nature and methods represents the actions. So now using the Get-Member
we can get the members of the object, there is a -InputObject
parameter to pass the object for which you want to see the members or simply you can pipe that to Get-Member
. The members are predominantly categorized as properties and methods.
$Values = Get-Volume
Get-Member -InputObject $Values[0]
# or simply
Get-Volume | Get-Member
Output:
TypeName: Microsoft.Management.Infrastructure.CimInstance#ROOT/Microsoft/Windows/Storage/MSFT_Volume
Name MemberType Definition
---- ---------- ----------
Clone Method System.Object ICloneable.Clone()
Dispose Method void Dispose(), void IDisposable.Dispose()
Equals Method bool Equals(System.Object obj)
GetCimSessionComputerName Method string GetCimSessionComputerName()
GetCimSessionInstanceId Method guid GetCimSessionInstanceId()
GetHashCode Method int GetHashCode()
GetObjectData Method void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context), void ISerializable.GetObjectData(Sys...
GetType Method type GetType()
ToString Method string ToString()
AllocationUnitSize Property uint32 AllocationUnitSize {get;}
DriveLetter Property char DriveLetter {get;}
FileSystem Property string FileSystem {get;}
FileSystemLabel Property string FileSystemLabel {get;set;}
ObjectId Property string ObjectId {get;}
PassThroughClass Property string PassThroughClass {get;}
PassThroughIds Property string PassThroughIds {get;}
PassThroughNamespace Property string PassThroughNamespace {get;}
PassThroughServer Property string PassThroughServer {get;}
Path Property string Path {get;}
PSComputerName Property string PSComputerName {get;}
Size Property uint64 Size {get;}
SizeRemaining Property uint64 SizeRemaining {get;}
UniqueId Property string UniqueId {get;}
DedupMode ScriptProperty System.Object DedupMode {get=switch ($this.psBase.CimInstanceProperties["DedupMode"].Value)...
DriveType ScriptProperty System.Object DriveType {get=switch ($this.psBase.CimInstanceProperties["DriveType"].Value)...
FileSystemType ScriptProperty System.Object FileSystemType {get=switch ($this.psBase.CimInstanceProperties["FileSystemType"].Value)...
HealthStatus ScriptProperty System.Object HealthStatus {get=switch ($this.psBase.CimInstanceProperties["HealthStatus"].Value)...
OperationalStatus ScriptProperty System.Object OperationalStatus {get=$_status = @();...
When you pipe any cmdlet to
Get-Member
it will show members of the output object(s) produced by the actual cmdlet.
There are lot other ways that you can fetch or filter the members of an object.
I have tried my level best to give you the complete set of Get-Member
examples in the reference page and please practice thoroughly.
Thank you, and will see you in the next session