Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This topic illustrates how to define a simple cmdlet to get instances of an object.
[!Important]
The object being used is the example Win32_Process object defined in the CIM Class Overview topic.
The syntax for the Win32_Process cmdlet is as follows.
Get-Win32Process [[-Name] <string[]>]
Get-Win32Process -ProcessId <UInt32[]>
For the cmdlet signature, or syntax, above, we have the following information.
- The noun for the cmdlet is Win32Process
- The cmdlet is query only for instances (as it's a Get cmdlet).
- The Get is a regular query expression where Win32_Process instances that match a specified ID or Name are returned.
- The Name parameter is an optional parameter of type string that accepts wildcards.
- The default ParameterSet is ByName.
The following CDXML defines the cmdlet.
<PowerShellMetadata xmlns="https://schemas.microsoft.com/cmdlets-over-objects/2009/11">
<!--
ClassName attribute defines the CIM Class in namespace/class format.
In this example, root/cimv2 is the namespace and Win32_process is the WMI class.
-->
<Class ClassName="root/cimv2/Win32_Process">
<Version>2.0.0.0</Version> <DefaultNoun>Win32Process</DefaultNoun>
<InstanceCmdlets>
<!--
Global definition for query parameters. Not used in this example because we have a single cmdlet only.
-->
<GetCmdletParameters/>
<!--
Definition of Get-Process cmdlet
-->
<GetCmdlet>
<CmdletMetadata Verb="Get" HelpUri="http://link.to.online.help"/>
<GetCmdletParameters DefaultCmdletParameterSet="ByName">
<QueryableProperties>
<Property PropertyName="Name">
<Type PSType="string"/>
<RegularQuery AllowGlobbing="true">
<CmdletParameterMetadata IsMandatory="false" Position="0"
ValueFromPipelineByPropertyName="true" CmdletParameterSets="ByName"/>
</RegularQuery>
</Property>
<Property PropertyName="ProcessId">
<Type PSType="uint32"/>
<RegularQuery>
<CmdletParameterMetadata IsMandatory="true" Aliases="ID PID"
CmdletParameterSets="ById"/>
</RegularQuery>
</Property>
</QueryableProperties>
</GetCmdletParameters>
</GetCmdlet>
</InstanceCmdlets
</Class>
</PowerShellMetadata>
Here is how you would use the sample CDXML in PowerShell.
#Save the sample file as CDXML (for example, Win32Process.cdxml)#Import this file in PS
Import-module .\win32Process.cdxml
#check the imported cmdlets
Get-command –module winprocess* -syntax
#run the cmdlet
Get-Win32Process
Get-Win32Process –id 0
Get-Win32Process –id 0,10,11
Get-Win32Process –Name c*
Get-Win32Process –Name a*,csrss.exe