New-CimInstance

创建 CIM 实例。

语法

New-CimInstance
   [-ClassName] <String>
   [-Key <String[]>]
   [[-Property] <IDictionary>]
   [-Namespace <String>]
   [-OperationTimeoutSec <UInt32>]
   [-ComputerName <String[]>]
   [-ClientOnly]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-CimInstance
   [-ClassName] <String>
   [-Key <String[]>]
   [[-Property] <IDictionary>]
   [-Namespace <String>]
   [-OperationTimeoutSec <UInt32>]
   -CimSession <CimSession[]>
   [-ClientOnly]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-CimInstance
   -ResourceUri <Uri>
   [-Key <String[]>]
   [[-Property] <IDictionary>]
   [-Namespace <String>]
   [-OperationTimeoutSec <UInt32>]
   -CimSession <CimSession[]>
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-CimInstance
   -ResourceUri <Uri>
   [-Key <String[]>]
   [[-Property] <IDictionary>]
   [-Namespace <String>]
   [-OperationTimeoutSec <UInt32>]
   [-ComputerName <String[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-CimInstance
   [-CimClass] <CimClass>
   [[-Property] <IDictionary>]
   [-OperationTimeoutSec <UInt32>]
   -CimSession <CimSession[]>
   [-ClientOnly]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-CimInstance
   [-CimClass] <CimClass>
   [[-Property] <IDictionary>]
   [-OperationTimeoutSec <UInt32>]
   [-ComputerName <String[]>]
   [-ClientOnly]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

说明

New-CimInstance cmdlet 基于本地计算机或远程计算机上的类定义创建 CIM 类的实例。 默认情况下,New-CimInstance cmdlet 在本地计算机上创建实例。

示例

示例 1:创建 CIM 类的实例

此示例在计算机上的 root/cimv2 命名空间中创建名为 win32_environment 的 CIM 类的实例。

New-CimInstance -ClassName Win32_Environment -Property @{Name="testvar";VariableValue="testvalue";UserName="domain\user"}

如果类不存在、属性错误或服务器拒绝调用,则不执行客户端验证。 如果成功创建实例,则 cmdlet 将输出新创建的实例。

示例 2:使用类架构创建 CIM 类的实例

此示例检索 CIM 类对象并将其存储在名为 $class 的变量中。 然后,变量的内容将传递给 New-CimInstance cmdlet。

$class = Get-CimClass -ClassName Win32_Environment
New-CimInstance -CimClass $class -Property @{Name="testvar";VariableValue="testvalue";UserName="Contoso\User1"}

示例 3:在客户端上创建动态实例

此示例在客户端计算机上创建名为 Win32_Process 的 CIM 类的动态实例,而无需从服务器获取实例。 新实例存储在变量 $a 中。 如果服务器上存在具有此键的实例,则可以使用此动态实例执行操作。

$a = New-CimInstance -ClassName Win32_Process -Property @{Handle=0} -Key Handle -ClientOnly
Get-CimInstance -CimInstance $a
Invoke-CimMethod -CimInstance $a -MethodName GetOwner

ProcessId Name                HandleCount WorkingSetSize VirtualSize
--------- ----                ----------- -------------- -----------
0         System Idle Process 0           8192           8192

Domain         :
ReturnValue    : 2
User           :
PSComputerName :

然后,Get-CimInstance cmdlet 检索特定的单个实例。 Invoke-CimMethod cmdlet 对检索的实例调用 GetOwner 方法。

示例 4:为特定命名空间的 CIM 类创建实例

此示例获取命名空间 root/somewhere 中名为 MSFT_Something 的 CIM 类的实例,并将其存储在名为 $class 的变量中。 该变量将传递给 New-CimInstance cmdlet,以创建新的 CIM 实例,并在新实例上执行客户端验证。

$class = Get-CimClass -ClassName MSFT_Something -Namespace root/somewhere
New-CimInstance -CimClass $class -Property @{"Prop1"=1;"Prop2"="value"} -ClientOnly

在此示例中,使用 CimClass 参数而不是 ClassName 参数验证 Prop1Prop2 是否实际存在,并且键已正确标记。

不能将 ComputerNameCimSession 参数与 ClientOnly 参数一起使用。

参数

-CimClass

指定表示实例类型的 CIM 类对象。 使用 Get-CimClass cmdlet 从计算机检索类声明。 使用此参数可提供更好的客户端架构验证。

类型:CimClass
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-CimSession

使用指定的 CIM 会话运行命令。 输入一个包含 CIM 会话的变量,或输入一个用于创建或获取 CIM 会话的命令,例如 New-CimSessionGet-CimSession cmdlet。 有关详细信息,请参阅 about_CimSession

类型:CimSession[]
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-ClassName

指定操作创建实例的 CIM 类的名称。 注意:可以使用 Tab 完成浏览类列表,因为 PowerShell 从本地 WMI 服务器获取类列表以提供类名列表。

类型:String
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-ClientOnly

指示仅在 PowerShell 中创建实例而不转到 CIM 服务器。 可以使用此参数创建内存中 CIM 实例,以便在后续 PowerShell 操作中使用。

类型:SwitchParameter
别名:Local
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ComputerName

指定要在其中运行 CIM 操作的计算机的名称。 可以指定完全限定的域名 (FQDN)、NetBIOS 名称或 IP 地址。

如果指定此参数,cmdlet 将使用 WSMan 协议创建到指定计算机的临时会话。

如果未指定此参数,cmdlet 将使用组件对象模型 (COM) 在本地计算机上执行该操作。

如果在同一台计算机上执行了多个操作,则使用 CIM 会话进行连接可提供更好的性能。

类型:String[]
别名:CN, ServerName
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-Confirm

提示你在运行 cmdlet 之前进行确认。

类型:SwitchParameter
别名:cf
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-Key

指定用作键的属性。 指定 Key 时,不能使用 CimSessionComputerName

类型:String[]
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-Namespace

指定新实例的类的命名空间。 默认命名空间为 root/cimv2。 可以使用 Tab 完成浏览命名空间列表,因为 PowerShell 从本地 WMI 服务器获取命名空间列表以提供命名空间列表。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-OperationTimeoutSec

指定 cmdlet 等待来自 CIM 服务器的响应的时间量。 默认情况下,此参数的值为 0,这意味着 cmdlet 使用服务器的默认超时值。 如果 OperationTimeoutSec 参数设置为小于可靠连接重试超时 3 分钟的值,则超过 OperationTimeoutSec 参数的值的网络故障不可恢复,因为服务器上的操作在客户端重新连接之前超时。

类型:UInt32
别名:OT
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Property

使用哈希表指定 CIM 实例的属性(名称值对)。

如果指定 CimClass 参数,则 New-CimInstance cmdlet 对客户端执行属性验证,以确保指定的属性与服务器上的类声明一致。 如果未指定 CimClass 参数,则属性验证在服务器上完成。

类型:IDictionary
别名:Arguments
Position:1
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-ResourceUri

指定资源类或实例的资源统一资源标识符 (URI)。 URI 用于标识计算机上特定类型的资源,例如磁盘或进程。

URI 由前缀和指向资源的路径组成。 例如:

http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_LogicalDisk

http://intel.com/wbem/wscim/1/amt-schema/1/AMT_GeneralSettings

默认情况下,如果未指定此参数,则使用 DMTF 标准资源 URI http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/,并将类名追加到其中。

ResourceURI 只能与使用 WSMan 协议创建的 CIM 会话一起使用,或者在指定 ComputerName 参数时使用,该参数会使用 WSMan 创建 CIM 会话。 如果在未指定 ComputerName 参数的情况下指定此参数,或者指定使用 DCOM 协议创建的 CIM 会话,则会收到错误,因为 DCOM 协议不支持 ResourceURI 参数。

如果同时指定了 ResourceUri 参数和 Filter 参数,则会忽略 Filter 参数。

类型:Uri
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

类型:SwitchParameter
别名:wi
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

输入

None

不能通过管道将对象传递给此 cmdlet。

输出

Object

此 cmdlet 返回包含 CIM 实例信息的对象。