Set-WmiInstance

创建或更新现有 Windows Management Instrumentation (WMI) 类的实例。

语法

Set-WmiInstance
   [-Class] <String>
   [-Arguments <Hashtable>]
   [-PutType <PutType>]
   [-AsJob]
   [-Impersonation <ImpersonationLevel>]
   [-Authentication <AuthenticationLevel>]
   [-Locale <String>]
   [-EnableAllPrivileges]
   [-Authority <String>]
   [-Credential <PSCredential>]
   [-ThrottleLimit <Int32>]
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-WmiInstance
   -InputObject <ManagementObject>
   [-Arguments <Hashtable>]
   [-PutType <PutType>]
   [-AsJob]
   [-ThrottleLimit <Int32>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-WmiInstance
   -Path <String>
   [-Arguments <Hashtable>]
   [-PutType <PutType>]
   [-AsJob]
   [-Impersonation <ImpersonationLevel>]
   [-Authentication <AuthenticationLevel>]
   [-Locale <String>]
   [-EnableAllPrivileges]
   [-Authority <String>]
   [-Credential <PSCredential>]
   [-ThrottleLimit <Int32>]
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-WmiInstance
   [-PutType <PutType>]
   [-AsJob]
   [-Impersonation <ImpersonationLevel>]
   [-Authentication <AuthenticationLevel>]
   [-Locale <String>]
   [-EnableAllPrivileges]
   [-Authority <String>]
   [-Credential <PSCredential>]
   [-ThrottleLimit <Int32>]
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-WmiInstance
   [-PutType <PutType>]
   [-AsJob]
   [-Impersonation <ImpersonationLevel>]
   [-Authentication <AuthenticationLevel>]
   [-Locale <String>]
   [-EnableAllPrivileges]
   [-Authority <String>]
   [-Credential <PSCredential>]
   [-ThrottleLimit <Int32>]
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-WmiInstance
   [-PutType <PutType>]
   [-AsJob]
   [-Impersonation <ImpersonationLevel>]
   [-Authentication <AuthenticationLevel>]
   [-Locale <String>]
   [-EnableAllPrivileges]
   [-Authority <String>]
   [-Credential <PSCredential>]
   [-ThrottleLimit <Int32>]
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

说明

Set-WmiInstance cmdlet 创建或更新现有 Windows Management Instrumentation (WMI) 类的实例。 创建或更新的实例将写入 WMI 存储库。

Windows PowerShell 3.0 中引入的新 CIM cmdlet 执行与 WMI cmdlet 相同的任务。 CIM cmdlet 符合 WS-Management (WSMan) 标准和通用信息模型 (CIM) 标准。 这使 cmdlet 能够使用相同的技术来管理基于 Windows 的计算机和那些运行其他操作系统的计算机。 请不要使用 Set-WmiInstance,而考虑使用 Set-CimInstanceNew-CimInstance cmdlet。

示例

示例 1:设置 WMI 日志记录级别

Set-WmiInstance -Class Win32_WMISetting -Argument @{LoggingLevel=2}

__GENUS                        : 2
__CLASS                        : Win32_WMISetting
__SUPERCLASS                   : CIM_Setting
__DYNASTY                      : CIM_Setting
__RELPATH                      : Win32_WMISetting=@
__PROPERTY_COUNT               : 27
__DERIVATION                   : {CIM_Setting}
__SERVER                       : SYSTEM01
__NAMESPACE                    : root\cimv2
__PATH                         : \\SYSTEM01\root\cimv2:Win32_WMISetting=@
ASPScriptDefaultNamespace      : \\root\cimv2
ASPScriptEnabled               : False
AutorecoverMofs                : {%windir%\system32\wbem\cimwin32.mof, %windir%\system32\wbem\ncprov.mof, %windir%\syst
em32\wbem\wmipcima.mof, %windir%\system32\wbem\secrcw32.mof...}
AutoStartWin9X                 :
BackupInterval                 :
BackupLastTime                 :
BuildVersion                   : 6001.18000
Caption                        :
DatabaseDirectory              : C:\Windows\system32\wbem\repository
DatabaseMaxSize                :
Description                    :
EnableAnonWin9xConnections     :
EnableEvents                   : False
EnableStartupHeapPreallocation : False
HighThresholdOnClientObjects   :
HighThresholdOnEvents          : 20000000
InstallationDirectory          : C:\Windows\system32\wbem
LastStartupHeapPreallocation   :
LoggingDirectory               : C:\Windows\system32\wbem\Logs\
LoggingLevel                   : 2
LowThresholdOnClientObjects    :
LowThresholdOnEvents           : 10000000
MaxLogFileSize                 : 65536
MaxWaitOnClientObjects         :
MaxWaitOnEvents                : 2000
MofSelfInstallDirectory        :
SettingID                      :

此命令将 WMI 日志记录级别设置为 2。 该命令通过 argument 参数传递要设置的属性和值(二者合称为值对)。 此参数接受由 @{property = value} 结构定义的哈希表。 返回的类信息将反映出新值。

示例 2:创建一个环境变量及其值

Set-WmiInstance -Class win32_environment -Argument @{Name="testvar";VariableValue="testvalue";UserName="<SYSTEM>"}

__GENUS          : 2
__CLASS          : Win32_Environment
__SUPERCLASS     : CIM_SystemResource
__DYNASTY        : CIM_ManagedSystemElement
__RELPATH        : Win32_Environment.Name="testvar",UserName="<SYSTEM>"
__PROPERTY_COUNT : 8
__DERIVATION     : {CIM_SystemResource, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER         : SYSTEM01
__NAMESPACE      : root\cimv2
__PATH           : \\SYSTEM01\root\cimv2:Win32_Environment.Name="testvar",UserName="<SYSTEM>"
Caption          : <SYSTEM>\testvar
Description      : <SYSTEM>\testvar
InstallDate      :
Name             : testvar
Status           : OK
SystemVariable   : True
UserName         : <SYSTEM>
VariableValue    : testvalue

此命令创建值为 testvalue 的 testvar 环境变量。 它通过创建 Win32_Environment WMI 类的新实例来实现此目的。 此操作需要适当的凭据,并且你可能需要重新启动 Windows PowerShell 才能查看新的环境变量。

示例 3:为多个远程计算机设置 WMI 日志记录级别

Set-WmiInstance -Class Win32_WMISetting -Argument @{LoggingLevel=2} -Computername "system01", "system02", "system03"

__GENUS                        : 2
__CLASS                        : Win32_WMISetting
__SUPERCLASS                   : CIM_Setting
__DYNASTY                      : CIM_Setting
__RELPATH                      : Win32_WMISetting=@
__PROPERTY_COUNT               : 27
__DERIVATION                   : {CIM_Setting}
__SERVER                       : SYSTEM01
__NAMESPACE                    : root\cimv2
__PATH                         : \\SYSTEM01\root\cimv2:Win32_WMISetting=@
ASPScriptDefaultNamespace      : \\root\cimv2
ASPScriptEnabled               : False
AutorecoverMofs                : {%windir%\system32\wbem\cimwin32.mof, %windir%\system32\wbem\ncprov.mof, %windir%\syst
em32\wbem\wmipcima.mof, %windir%\system32\wbem\secrcw32.mof...}
AutoStartWin9X                 :
BackupInterval                 :
BackupLastTime                 :
BuildVersion                   : 6001.18000
Caption                        :
DatabaseDirectory              : C:\Windows\system32\wbem\repository
DatabaseMaxSize                :
Description                    :
EnableAnonWin9xConnections     :
EnableEvents                   : False
EnableStartupHeapPreallocation : False
HighThresholdOnClientObjects   :
HighThresholdOnEvents          : 20000000
InstallationDirectory          : C:\Windows\system32\wbem
LastStartupHeapPreallocation   :
LoggingDirectory               : C:\Windows\system32\wbem\Logs\
LoggingLevel                   : 2
LowThresholdOnClientObjects    :
LowThresholdOnEvents           : 10000000
MaxLogFileSize                 : 65536
MaxWaitOnClientObjects         :
MaxWaitOnEvents                : 2000
MofSelfInstallDirectory        :
SettingID                      :
...

此命令将 WMI 日志记录级别设置为 2。 该命令通过 argument 参数传递要设置的属性和值(二者合称为值对)。 此参数接受由 @{property = value} 结构定义的哈希表。 返回的类信息将反映出新值。

参数

-Arguments

指定要更改的属性的名称,以及该属性的新值。 名称和值必须是名称/值对。 该名称/值对在命令行上以哈希表形式传递。 例如:

@{Setting1=1; Setting2=5; Setting3="test"}

类型:Hashtable
别名:Args, Property
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-AsJob

指示此 cmdlet 作为后台作业运行。 使用此参数可运行需要较长时间才能完成的命令。

指定 AsJob 参数时,该命令将返回表示后台作业的对象,然后显示命令提示符。 当作业完成时,你可以继续在此会话中工作。 如果用于远程计算机,则作业在本地计算机上创建,并且来自远程计算机的结果将自动返回本地计算机。 若要管理作业,请使用包含 Job 名词的 cmdlet (Job cmdlet)。 若要获取作业结果,请使用 Receive-Job cmdlet。

若要将此参数与远程计算机一起使用,必须为本地和远程计算机配置远程处理。 此外,在 Windows Vista 和更高版本的 Windows 操作系统中,必须使用“以管理员身份运行”选项启动 Windows PowerShell。 有关详细信息,请参阅 about_Remote_Requirements

有关 Windows PowerShell 后台作业的详细信息,请参阅 about_Jobsabout_Remote_Jobs

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

-Authentication

指定必须用于 WMI 连接的身份验证级别。 此参数的可接受值为:

  • -1:Unchanged。
  • 0:默认。
  • 1:None。 不执行身份验证。
  • 2:Connect。 仅当客户端与应用程序建立了关系时才执行身份验证。
  • 3:Call。 应用程序收到请求时只在每次调用的开始执行身份验证。
  • 4:Packet。 对从客户端收到的所有数据执行身份验证。
  • 5:PacketIntegrity。 所有在客户端和应用程序之间传送的数据都经过身份验证和验证。
  • 6:PacketPrivacy。 使用其他身份验证等级的属性,并且所有数据都加密。
类型:AuthenticationLevel
接受的值:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Authority

指定用于对 WMI 连接进行身份验证的授权机构。 可以指定标准 NTLM 或 Kerberos 身份验证。 若要使用 NTLM,请将授权机构设置设为 ntlmdomain:<DomainName>,其中 <DomainName> 标识有效的 NTLM 域名。 若要使用 Kerberos,请指定 kerberos:<DomainName>\<ServerName>。 连接到本地计算机时不能包含授权机构设置。

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

-Class

指定 WMI 类的名称。

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

-ComputerName

指定要运行该 cmdlet 的计算机的名称。 默认为本地计算机。

键入一台或多台计算机的 NetBIOS 名称、IP 地址或完全限定的域名。 若要指定本地计算机,请键入计算机名称、句点 (.) 或 localhost。

此参数不依赖于 Windows PowerShell 远程处理。 即使计算机未配置为运行远程命令,也可以使用 ComputerName 参数。

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

-Confirm

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

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

-Credential

指定有权执行此操作的用户帐户。 默认为当前用户。

键入用户名,如 User01 或 Domain01\User01;或输入 PSCredential 对象,如 Get-Credential cmdlet 生成的一个对象。 键入用户名时,此 cmdlet 会提示输入密码。

随 Windows PowerShell 一起安装的任何提供程序都不支持此参数。

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

-EnableAllPrivileges

指示此 cmdlet 在命令进行 WMI 调用之前启用当前用户的所有权限。

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

-Impersonation

指定要使用的模拟级别。 此参数的可接受值为:

  • 0:默认。 读取默认模拟级别的本地注册表,通常设置为“3:模拟”。
  • 1:Anonymous。 隐藏调用方的凭据。
  • 2:Identify。 允许对象查询调用方的凭据。
  • 3:Impersonate。 允许对象使用调用方的凭据。
  • 4:Delegate。 允许对象允许其他对象使用调用方的凭据。
类型:ImpersonationLevel
接受的值:Default, Anonymous, Identify, Impersonate, Delegate
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-InputObject

指定要用作输入的 ManagementObject 对象。 如果使用此参数,则忽略 Arguments 参数之外的所有其他参数。

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

-Locale

指定 WMI 对象的首选区域设置。 按首选顺序将 Locale 参数指定为 MS_<LCID> 格式的数组。

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

-Namespace

当此参数与 Class 参数一起使用时,它将指定引用的 WMI 类所在的 WMI 存储库命名空间。

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

-Path

指定要创建或更新的实例的 WMI 对象路径。

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

-PutType

指示是否创建或更新 WMI 实例。 此参数的可接受值为:

  • UpdateOnly 更新现有的 WMI 实例。
  • CreateOnly 创建新的 WMI 实例。
  • UpdateOrCreate 如果 WMI 实例存在,则更新该实例;如果实例不存在,则创建一个新实例。
类型:PutType
接受的值:None, UpdateOnly, CreateOnly, UpdateOrCreate
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ThrottleLimit

指定为运行此命令可建立的并发连接的最大数目。 此参数与 AsJob 参数一起使用。 节流限制仅适用于当前命令,而不适用于会话或计算机。

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

-WhatIf

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

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

输入

None

此 cmdlet 不接受输入。

输出

None

此 cmdlet 将不产生输出。

备注

Windows PowerShell 包含 Set-WmiInstance 的以下别名:

  • swmi