【发布时间】:2020-08-17 04:57:59
【问题描述】:
有没有办法继续使用以空格开头的名称并将其分解?
所以这当然有效:
$Splat = @{
name = 'chrome'
fileversioninfo = $true
}
(Get-Process @Splat)[0]
对我来说它返回:
ProductVersion FileVersion FileName
-------------- ----------- --------
84.0.4147.125 84.0.4147.125 C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
现在,如果我将变量名称更改为“Chrome 文件路径和版本”,我会得到:
${ Chrome File Path and Version } = @{
name = 'chrome'
fileversioninfo = $true
}
变量有效并返回属性:
Name Value
---- -----
fileversioninfo True
name chrome
但试图将其吐出,它认为我正在尝试创建一个哈希表,因为括号:
At line:5 char:23
+ (Get-Process @{ Chrome File Path and Version })[0]
+ ~
Missing '=' operator after key in hash literal.
所以我的问题是,任何人都知道一种方法来喷出需要括号括起来的变量吗? 我很清楚一个简单的
$splat = ${ Chrome File Path and Version }
可行,但问题不在于解决方法,只要有一种方法可以将空格作为第一个字符的变量。 我已经尝试过转义字符、单引号/双引号、子表达式和管道来将名称放在适当的位置,但没有关于此的文档,我很确定它只是不受支持:/
另外,如果重要的话,我仍然使用版本 5.1.19041.1
【问题讨论】:
-
${ Chrome File Path and Version }这不是闹剧。这应该是什么? -
@DougMaurer 这就是创建带有空格或特殊字符的变量的方式,例如连字符。
-
我认为你是对的,这种方式根本不支持。不过,我找不到任何官方文档/规范。使用“简单名称”变量是 splat 的唯一方法。
标签: powershell parameter-splatting