为什么以下工作:
Get-WmiObject -class Win32_OperatingSystem
这也有效:
$params = @{class='Win32_OperatingSystem'}
Get-WmiObject @params
但这不起作用:
Get-WmiObject @{class='Win32_OperatingSystem'}
错误:
Get-WmiObject : Invalid query "select * from System.Collections.Hashtable"
At line:1 char:1
+ Get-WmiObject @{class='Win32_OperatingSystem'}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
剥离是将参数值集合传递给命令作为单位的一种方法。Windows PowerShell将集合中的每个值与命令参数相关联。散布的参数值存储在命名的拼布变量中,看起来像标准变量,但以AT符号(@)而不是美元符号($)开始。AT符号告诉Windows PowerShell您正在传递一个值的集合,而不是单个值。
如果您不将其存储到变量中,则它不会散开,它是一个简单的标签,它作为位置参数传递到命令中。
参考
关于剥落