为什么 Splat 不能直接与 PowerShell 中的命令一起使用?



为什么以下工作:

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您正在传递一个值的集合,而不是单个值。

如果您不将其存储到变量中,则它不会散开,它是一个简单的标签,它作为位置参数传递到命令中。

参考

关于剥落

相关内容

  • 没有找到相关文章

最新更新