Create an instance of a CIM class based on the class definition on either the local computer or a remote computer. The Common Information Model (CIM) is the DMTF standard [DSP0004] for describing the structure and behavior of managed resources such as storage, network, or software components.
Syntax
New-CimInstance [-ClassName] String
[ -ComputerName String[] | -CimSession CimSession[] ]
[-Key String[]] [-ClientOnly] [-Namespace String] [-OperationTimeoutSec UInt32]
[[-Property] IDictionary] [-Confirm] [-WhatIf] [CommonParameters]
New-CimInstance[-CimClass] CimClass
[ -ComputerName String[]] | -CimSession CimSession[] ]
[-ClientOnly] [-OperationTimeoutSec UInt32]
[-Property] IDictionary] [-Confirm] [-WhatIf] [CommonParameters]
New-CimInstance -ResourceUri Uri
[ -ComputerName String[]] | -CimSession CimSession[] ]
[-Key String[]] [-Namespace String] [-OperationTimeoutSec UInt32]
[-Property] IDictionary] [-Confirm] [-WhatIf] [CommonParameters]
Key
-CimClass CimClass
Specifies a CIM class object that represents the type of the instance.
You can use the Get-CimClass cmdlet to retrieve the class declaration from a computer.
Using this parameter results in better client side schema validations.
-CimSession CimSession[]
The CIM session to use for this cmdlet. Enter a variable that contains the CIM session or a command
that creates or gets the CIM session, such as the New-CimSession or Get-CimSession cmdlets. For more
information, see about_CimSessions.
-ClassName String
The name of the CIM class for which to retrieve the CIM instances.
NOTE: You can use tab completion to browse the list of classes, because wps_2 gets a list of classes from the
local WMI server to provide a list of class names.
-ClientOnly
Indicates that the instance is only created in wps_1 without going to the CIM server. You can use this
parameter to create an in-memory CIM instance for use in subsequent wps_2 operations.
-ComputerName String[]
The computer on which you want to run the CIM operation. You can specify a fully qualified domain name
(FQDN), a NetBIOS name, or an IP address.
If you specify this parameter, the cmdlet creates a temporary session to the specified computer using the
WsMan protocol.If you do not specify this parameter, the cmdlet performs the operation on the local computer
using Component Object Model (COM).
If multiple operations are being performed on the same computer, using a CIM session gives better performance.
-Key String
Specifies the properties that are used as keys. -CimSession and -ComputerName cannot be used when -Key is specified.
-Namespace String
Specifies the namespace of the class for the new instance.
The default namespace is root/cimv2.
NOTE: You can use tab completion to browse the list of namespaces, because wps_2 gets a list of namespaces
from the local WMI server to provide the list of namespaces.
-OperationTimeoutSec UInt32
Specifies the amount of time that the cmdlet waits for a response from the computer.
By default, the value of this parameter is 0, which means that the cmdlet uses the default timeout value for
the server.
If the OperationTimeoutSec parameter is set to a value less than the robust connection retry timeout of 3
minutes, network failures that last more than the value of the OperationTimeoutSec parameter are not
recoverable, because the operation on the server times out before the client can reconnect.
-Property IDictionary
Specifies the properties of the CIM instance using a hash table (name-value pairs).
If you specify the CimClass parameter, then the New-CimInstance cmdlet performs a property validation on the
client to make sure that the properties specified are consistent with the class declaration on the server. If
the CimClass parameter is not specified, then the property validation is done on the server.
-ResourceUri Uri
Specifies the resource uniform resource identifier (URI) of the resource class or instance. The URI is used to
identify a specific type of resource, such as disks or processes, on a computer.
A URI consists of a prefix and a path to a resource. For example:
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_LogicalDisk
http://intel.com/wbem/wscim/1/amt-schema/1/AMT_GeneralSettings
By default, if you do not specify this parameter, the DMTF standard resource URI
http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/ is used and the class name is appended to it.
ResourceURI can only be used with CIM sessions created using the WSMan protocol, or when specifying the
ComputerName parameter, which creates a CIM session using WSMan. If you specify this parameter without
specifying the ComputerName parameter, or if you specify a CIM session created using DCOM protocol, you will
get an error, because the DCOM protocol does not support the ResourceURI parameter.
If both the -ResourceUri parameter and the -Filter parameter are specified, the -Filter parameter is ignored.
-confirm
Prompt for confirmation before executing the command.
-whatIf
Describe the command without actually executing it.
CommonParameters:
-Verbose, -Debug, -ErrorAction, -ErrorVariable, -WarningAction, -WarningVariable,
-OutBuffer, PipelineVariable -OutVariable.
Use the Property parameter to set the initial values of the selected properties. By default, the New-CimInstance cmdlet creates an instance on the local computer.
Standard Aliases for New-CIMInstance: ncim
The CIM classes available will vary according to your operating system.
List all CIM classes:
PS C:\> Get-cimclassList all the classes involding discs:
PS C:\> Get-cimclass -List | Where cimClassName -like "*disk*"Some common CIM classes:
Win32_Baseboard (Motherboard) Win32_BIOS Win32_ComputerSystem Win32_LogicalDisk (hard disk) Win32_OperatingSystem (Virtual Memory) Win32_Printer Win32_PrinterShare Win32_PhysicalMemory Win32_Process Win32_Processor (32+64 bit processor info) Win32_Product (avoid this: see Q974524) Win32_Share (File shares)List all properties of a class:
PS C:\> Get-CIMinstance Win32_BIOS | Get-MemberFind a specific class property:
PS C:\> gcim Win32_bios | Get-Member -MemberType property | Where { $_.name -match 'install'} or simply: PS C:\> gcim Win32_bios | Get-Member -MemberType property | Where name -match 'install'
Examples
Create an instance of a CIM Class named win32_environment in the root/cimv2 namespace on the computer.:
PS C:\> New-CimInstance -ClassName Win32_Environment -Property @{Name="testvar";VariableValue="testvalue";UserName="domain\user"}
Retrieve a CIM class object and store it in a variable named $class
PS C:\> $class = Get-CimClass -ClassName Win32_Environment
Pass the contents of the variable to the New-CimInstance cmdlet:
PS C:\> New-CimInstance -CimClass $class -Property @{Name="testvar";VariableValue="testvalue";UserName="ss64dom\User64"}
Creates a dynamic instance of the CIM class win32_Process on the client computer without getting the instance from the server. Store the dynamic instance in a variable named $dyn:
PS C:\> $dyn = New-CimInstance -ClassName Win32_Process -Property @{Handle=0} -Key Handle -ClientOnly
Pass the contents of the $dyn variable to Get-CimInstance:
PS C:\> Get-CimInstance –CimInstance $dyn
Invoke the GetOwner method against this dynamic instance:
PS C:\> Invoke-CimMethod -CimInstance $dyn -MethodName GetOwner
Get an instance of a CIM class named MSFT_Something in the namespace root/ss64 and stores it in a variable named $class
PS C:\> $class = Get-CimClass -ClassName MSFT_Something -Namespace root/ss64
Create a new CIM instance and perform client side validations on the new instance:
PS C:\> New-CimInstance -CimClass $class -Property @{"Prop1"=1;"Prop2"="value"} -ClientOnly
If you want to validate the instance, for example, to make sure Prop1 and Prop2 actually exist and that the keys are marked correctly, use the CimClass parameter instead of the ClassName parameter.
“There is no instance of a nation benefitting from prolonged warfare” ~ Sun Tzu
Related PowerShell Cmdlets:
Get-CimInstance - Get a managed resource (storage, network, software etc).
Get-Credential - Get a security credential object based on a user name and password.
Invoke-CimMethod - Invoke a method of a CIM class or CIM instance.
Remove-CimInstance - Remove a CIM instance from a computer.
RUNDLL32 - Run a DLL command (add/remove print connections).