Set-SCGuestInfo

设置与来宾操作系统中键/值对的键关联的值。

语法

Set-SCGuestInfo
   [-VM] <VM>
   -KvpMap <Hashtable>
   [<CommonParameters>]
Set-SCGuestInfo
   [-VM] <VM>
   [-Key] <String>
   [[-Value] <String>]
   [<CommonParameters>]

说明

Set-SCGuestInfo cmdlet 设置与来宾操作系统中键/值对的键关联的值。

示例

示例 1:设置单个键/值对

PS C:\> $VM = Get-SCVirtualMachine "VM01" 
PS C:\> Set-SCGuestInfo -VM $VM -Key Key -Value Value

第一个命令获取名为 VM01 的虚拟机对象,并将该对象存储在$VM变量中。

第二个命令设置 VM01 的键/值对。

示例 2:将键设置为键/值对的值

PS C:\> Get-SCVirtualMachine -Name "VM01" | Set-SCGuestInfo -Key Microsoft.Lab.Isolation.ServerVersion -Value 1.0.1101

此命令将密钥设置为 Microsoft.Lab.Isolation.ServerVersion,并将名为 VM01 的虚拟机的值设置为 1.0.1101。 如果该键不存在,则会使用指定的值创建它。 如果键已存在,将使用此命令中指定的值覆盖其值。

可以使用 Read-SCGuestInfo cmdlet 提供密钥并返回相应的值。

示例 3:设置多个键/值对

PS C:\> $VM = Get-SCVirtualMachine -Name "Win2k8R2"
PS C:\> $ValuesMap  = @{"Key1" = "avalue1"; "Key2IsEmptyString" = "" ; "Key3" = "value3"}
PS C:\> Set-SCGuestInfo -VM $VM -KvpMap $ValuesMap
PS C:\> Read-SCGuestInfo -VM $VM -KvpMap $ValuesMap | Select KvpMap

第一个命令获取名为 Win2k8R2 的虚拟机对象,并将对象存储在$VM变量中。

第二个命令创建一个名为$ValuesMap的哈希表,其中包含键/值对的相应键和值。 值可以设置为字符串、空字符串或$Null。 将值设置为$Null删除密钥。

第三个命令设置名为 Win2k8R2 的虚拟机的键/值对。

最后一个命令将读回名为 Win2k8R2 的虚拟机的键/值对。

示例 4:修改一组键/值对的值集

PS C:\> $VM = Get-SCVirtualMachine -Name "Win2k8R2"
PS C:\> $ValuesMap  = @{"Key1" = "avalue1"; "Key2IsEmptyString" = "" ; "Key3" = "value3"}
PS C:\> Set-SCGuestInfo -VM $VM -KvpMap $ValuesMap
PS C:\> Read-SCGuestInfo -VM $VM -KvpMap $ValuesMap | Select KvpMap
PS C:\> $ValuesMap  = @{"Key2IsEmptyString" = "KeyIsNoLongerEmpty"}
PS C:\> Set-SCGuestInfo -VM $VM -KvpMap $ValuesMap
PS C:\> $ValuesMap  = @{"Key1" = $Null; "Key2IsEmptyString" = $Null; "Key3" = $Null}
PS C:\> Read-SCGuestInfo -VM $VM -KvpMap $ValuesMap | Select KvpMap

第一个命令获取名为 Win2k8R2 的虚拟机对象,并将对象存储在$VM变量中。

第二个命令创建一个名为$ValuesMap的哈希表,其中包含键/值对的相应键和值。 值可以设置为字符串、空字符串或$Null。 将值设置为$Null删除密钥。

第三个命令设置名为 Win2k8R2 的虚拟机的键/值对。

第四个命令将读回名为 Win2k8R2 的虚拟机的键/值对。

第五个命令创建一个新的哈希表,其中特定键更改为其他值。

第六个命令设置哈希表中指定键的修改值。

最后两个命令可读回名为 Win2k8R2 的虚拟机的键/值对,包括键 Key2IsEmptyString 的修改值。

示例 5:使用两种方法删除键/值对

PS C:\> $VM = Get-SCVirtualMachine -Name "Win2k8R2"
PS C:\> $ValuesMap  = @{"Key1" = "avalue1"; "Key2" = "avalue2"}
PS C:\> Set-SCGuestInfo -VM $VM -KvpMap $ValuesMap
PS C:\> Read-SCGuestInfo -VM $VM -KvpMap $ValuesMap | Select KvpMap
PS C:\> Set-SCGuestInfo -VM $VM -Key Key1 
PS C:\> $KvpsToDelete  = @{"Key2" = $Null}
PS C:\> Set-SCGuestInfo -VM $VM -KvpMap $KvpsToDelete  
PS C:\> Read-SCGuestInfo -VM $VM -KvpMap $ValuesMap | Select KvpMap

第一个命令获取名为 Win2k8R2 的虚拟机对象,并将对象存储在$VM变量中。

接下来的三个命令创建两个键及其值,并将其返回到虚拟机 Win2k8R2 的控制台。

第五个命令通过调用 Set-SCGuestInfo 而不指定值参数来删除键/值对 Key1。

第六和第七个命令创建一个新的哈希表,将 Null 作为键键 2 的值。 然后,通过调用 Set-SCGuestInfo cmdlet 删除密钥 2。

最后一个命令显示,最初创建的两个键现在都通过两个单独的方法删除。

示例 6:设置多个值,其中一个值为空

PS C:\> $VM = Get-SCVirtualMachine -Name "VM01"
PS C:\> $ValuesMap3 = @{"VSLM1" = "value1"; "VLSM2" = "value2" ; "VLSM3" = "value3" ; "VLDM4" = ""}
PS C:\> Set-SCGuestInfo -VM $VM -KVPMap $ValuesMap3
PS C:\> Read-SCGuestInfo -VM $VM -KVPMap $ValuesMap3 | Select KVPMap

第一个命令获取名为 VM01 的虚拟机对象,并将该对象存储在$VM变量中。

第二个命令创建一个名为 $ValuesMap 3 的哈希表,其中包含键/值对的相应键和值。 值可以设置为字符串、空字符串或$Null。 将值设置为$Null删除密钥。

第三个命令设置哈希表中指定键的值。

最后一个命令将读回名为 VM01 的虚拟机的键/值对。

示例 7:删除一个值,并将另一个值设置为空

PS C:\> $VM = Get-SCVirtualMachine -Name "VM01"
PS C:\> $ValuesMap4 = @{"VLSM2" = $Null; "VSLM1" = "" }
PS C:\> Set-SCGuestInfo -VM $VM -KVPMap $ValuesMap4
PS C:\> Read-SCGuestInfo -VM $VM -KVPMap $ValuesMap4 | Select KVPMap

第一个命令获取名为 VM01 的虚拟机对象,并将该对象存储在$VM变量中。

第二个命令创建一个名为 $ValuesMap 4 的哈希表,其中包含键/值对的对应键和值。 值可以设置为字符串、空字符串或$Null。 将值设置为$Null删除密钥。

第三个命令设置哈希表中指定键的值。

第四个命令删除密钥 VLSM2,并通过调用 Set-SCGuestInfo 命令将密钥 VSLM1 设置为空。

最后一个命令将读回名为 VM01 的虚拟机的键/值对。

示例 8:设置一个值并删除另一个值

PS C:\> $VM = Get-SCVirtualMachine -Name "VM01"
PS C:\> $ValuesMap5 = @{"VSLM1" = "data again"; "VLSM3" = $Null }
PS C:\> Set-SCGuestInfo -VM $VM -KVPMap $ValuesMap5
PS C:\> Read-SCGuestInfo -VM $VM -KVPMap $ValuesMap5 | Select KVPMap

第一个命令获取名为 VM01 的虚拟机对象,并将该对象存储在$VM变量中。

第二个命令创建一个名为 $ValuesMap 5 的哈希表,其中包含键/值对的相应键和值。 值可以设置为字符串、空字符串或$Null。 将值设置为$Null删除密钥。

第四个命令通过调用 Set-SCGuestInfo 命令将密钥 VSLM1 设置为“data”并删除密钥 VLSM3。

最后一个命令将读回名为 VM01 的虚拟机的键/值对。

示例 9:忽略不存在的密钥删除

PS C:\> $VM = Get-SCVirtualMachine -Name "VM01"
PS C:\> $KeysDoNotExist  = @{"o1ff1" = $Null; "o1ff2" = $Null; "o1ff3" = $Null ; "o1ff4" = $Null }
PS C:\> Set-SCGuestInfo -VM $VM -KVPMap $KeysDoNotExist 
PS C:\> Set-SCGuestInfo -VM $VM -Key "o1ff1"

第一个命令获取名为 VM01 的虚拟机对象,并将该对象存储在$VM变量中。

第二个命令创建一个名为 $ValuesMap 5 的哈希表,其中包含键/值对的相应键和值。 将值设置为$Null删除密钥。

第三个命令将值设置为$Null哈希表中的指定键。

最后一个命令通过调用 Set-SCGuestInfo cmdlet 删除哈希表中除键 o1ff1 之外的所有键。

参数

-Key

指定键/值对中的键。

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

-KvpMap

指定与 Hyper-V 公开的值对应的键/值对的哈希表。

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

-Value

指定用于对对象或属性进行属性特性的字符串。

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

-VM

指定一个虚拟机对象。

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

输出

String

此 cmdlet 返回 String 对象。