Set-CimInstance

藉由呼叫 CIM 類別的 ModifyInstance 方法,修改 CIM 伺服器上的 CIM 實例。

Syntax

Set-CimInstance
   [-ComputerName <String[]>]
   [-ResourceUri <Uri>]
   [-OperationTimeoutSec <UInt32>]
   [-InputObject] <CimInstance>
   [-Property <IDictionary>]
   [-PassThru]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-CimInstance
   -CimSession <CimSession[]>
   [-ResourceUri <Uri>]
   [-OperationTimeoutSec <UInt32>]
   [-InputObject] <CimInstance>
   [-Property <IDictionary>]
   [-PassThru]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-CimInstance
   -CimSession <CimSession[]>
   [-Namespace <String>]
   [-OperationTimeoutSec <UInt32>]
   [-Query] <String>
   [-QueryDialect <String>]
   -Property <IDictionary>
   [-PassThru]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-CimInstance
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [-OperationTimeoutSec <UInt32>]
   [-Query] <String>
   [-QueryDialect <String>]
   -Property <IDictionary>
   [-PassThru]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

此 Cmdlet 僅適用於 Windows 平臺。

此 Cmdlet 會修改 CIM 伺服器上的 CIM 實例。

如果未指定 InputObject 參數,Cmdlet 會以下列其中一種方式運作:

  • 如果未指定 ComputerName 參數或 CimSession 參數,則此 Cmdlet 會使用元件物件模型 (COM) 會話在本機 Windows Management Instrumentation (WMI) 上運作。
  • 如果指定 ComputerName 參數或 CimSession 參數,則此 Cmdlet 會針對 ComputerName 參數或 CimSession 參數所指定的 CIM 伺服器運作。

如果指定 InputObject 參數,Cmdlet 會以下列其中一種方式運作:

  • 如果未指定 ComputerName 參數或 CimSession 參數,則此 Cmdlet 會使用輸入物件的 CIM 會話或電腦名稱。
  • 如果指定 ComputerName 參數或 CimSession 參數,則此 Cmdlet 會使用 CimSession 參數值或 ComputerName 參數值。 這不是很常見的。

範例

範例 1:設定 CIM 實例

本範例會使用 Query 參數,將 VariableValue 屬性的值設定為 abcd。 您可以修改符合 Windows Management Instrumentation 查詢語言 (WQL) 查詢的實例。

Set-CimInstance -Query 'Select * from Win32_Environment where name LIKE "testvar%"' -Property @{VariableValue="abcd"}

範例 2:使用管線設定 CIM 實例屬性

此範例會使用 Get-CimInstance Cmdlet 擷取由Query 參數篩選的 CIM 實例物件。 Cmdlet 會將 Set-CimInstance VariableValue 屬性的值修改為 abcd

Get-CimInstance -Query 'Select * from Win32_Environment where name LIKE "testvar%"' |
  Set-CimInstance -Property @{VariableValue="abcd"}

範例 3:使用輸入物件設定 CIM 實例屬性

$x = Get-CimInstance -Query 'Select * from Win32_Environment where Name="testvar"'
Set-CimInstance -InputObject $x -Property @{VariableValue="somevalue"} -PassThru

這個範例會使用 Get-CimInstance擷取 Query 參數篩選的 CIM 實例對象,$x然後將變數的內容傳遞至 Set-CimInstance Cmdlet。 Set-CimInstance然後將 VariableValue 屬性修改somevalue因為使用Passthru參數,這個範例會傳回修改過的CIM實例物件。

範例 4:設定 CIM 實例屬性

這個範例會使用 Get-CimInstance Cmdlet 將 Query 參數中指定的 CIM 實例物件擷取到變數$x,並變更物件的 VariableValue 屬性值以變更。 接著會使用 Set-CimInstance Cmdlet 儲存 CIM 實例物件。 因為使用Passthru參數,這個範例會傳回修改過的CIM實例物件。

$x = Get-CimInstance -Query 'Select * from Win32_Environment where name="testvar"'
$x.VariableValue = "Change"
Set-CimInstance -CimInstance $x -PassThru

範例 5:顯示使用 WhatIf 修改的 CIM 實例清單

此範例會使用 Common 參數 WhatIf 來指定不應該完成修改,但只會輸出完成時會發生什麼情況。

Set-CimInstance -Query 'Select * from Win32_Environment where name LIKE "testvar%"' -Property @{VariableValue="abcd"} -WhatIf

範例 6:在使用者確認之後設定 CIM 實例

這個範例會使用 Common 參數 Confirm 來指定只有在使用者確認之後才能完成修改。

Set-CimInstance -Query 'Select * from Win32_Environment where name LIKE "testvar%"' -Property @{VariableValue="abcd"} -Confirm

範例 7:設定建立的 CIM 實例

此範例會使用 Cmdlet 建立具有指定屬性的 New-CimInstance CIM 實例,並將其內容擷取至變數 $x。 變數接著會傳遞至 Set-CimInstance Cmdlet,將 VariableValue 屬性的值修改為 somevalue因為使用Passthru參數,這個範例會傳回修改過的CIM實例物件。

$x = New-CimInstance -ClassName Win32_Environment -Property @{Name="testvar";UserName="domain\user"} -Key Name,UserName -ClientOnly
Set-CimInstance -CimInstance $x -Property @{VariableValue="somevalue"} -PassThru

參數

-CimSession

在遠端電腦上執行 Cmdlet。 輸入計算機名稱或會話物件,例如 或 Get-CimSession Cmdlet 的New-CimSession輸出。

Type:CimSession[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ComputerName

指定您要執行 CIM 作業的電腦名稱。 您可以指定完整功能變數名稱 (FQDN) 或 NetBIOS 名稱。

如果您未指定此參數,Cmdlet 會使用元件物件模型 (COM) 在本機計算機上執行作業。

如果您指定此參數,Cmdlet 會使用 WsMan 通訊協定,為指定的電腦建立暫存會話。

如果在相同電腦上執行多個作業,則使用 CIM 作業進行連線可提供更佳的效能。

Type:String[]
Aliases:CN, ServerName
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

執行 Cmdlet 之前先提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

指定要作為輸入的 CIM 實例物件。

InputObject 參數不會列舉集合。 如果傳遞集合,則會擲回錯誤。 使用集合時,使用管線傳送輸入來列舉值。

Type:CimInstance
Aliases:CimInstance
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Namespace

指定 CIM 作業的命名空間。 默認命名空間為 root/cimv2。 您可以使用索引標籤自動完成來瀏覽命名空間清單,因為 PowerShell 會從本機 WMI 伺服器取得命名空間清單,以提供命名空間清單。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-OperationTimeoutSec

指定 Cmdlet 等候電腦回應的時間量。 根據預設,此參數的值是0,這表示 Cmdlet 會使用伺服器的預設逾時值。

如果 OperationTimeoutSec 參數設定為小於強固連線重試逾時 3 分鐘的值,則無法復原最後超過 OperationTimeoutSec 參數值的網路失敗,因為伺服器上的作業會在用戶端重新連線之前逾時。

Type:UInt32
Aliases:OT
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

會傳回 物件,代表您正在使用的專案。 根據預設,此 Cmdlet 不會產生任何輸出。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Property

將 CIM 實例的屬性指定為哈希表(使用名稱/值組)。 只會變更使用此參數指定的屬性。 CIM 實例的其他屬性不會變更。

Type:IDictionary
Aliases:Arguments
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Query

指定要在 CIM 伺服器上執行的查詢,以擷取要在其中執行 Cmdlet 的 CIM 實例。 您可以使用 QueryDialect 參數來指定查詢方言。

如果指定的值包含雙引號 (")、單引號 (') 或反斜杠 (\),您必須在字元前面加上反斜杠 (\) 字元,以逸出這些字元。 如果指定的值使用 WQL LIKE 運算子,則必須以方括弧 (): 百分比 (%), 底線 (_[]), 或左方括弧 () 括住下列字元,[以逸出下列字元。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-QueryDialect

指定用於 Query 參數的查詢語言。 此參數可接受的值為: WQLCQL。 預設值為 WQL

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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 參數。

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 未執行 Cmdlet。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

CimInstance

輸出

None

根據預設,此 Cmdlet 不會傳回任何輸出。

CimInstance

當您使用 Passthru 參數時,這個 Cmdlet 會傳回修改過的 CIM 實例物件。

備註

PowerShell 包含下列的 Set-CimInstance別名:

  • Windows:
    • scim

此 Cmdlet 僅適用於 Windows 平臺。