gpt4 book ai didi

powershell - 以空格开头的 Splatting 变量

转载 作者:行者123 更新时间:2023-12-02 23:32:53 25 4
gpt4 key购买 nike

有没有办法继续使用以空格开头的名称?
所以这当然有效:

$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 吗?
我很清楚一个简单的
$splat = ${ Chrome File Path and Version }
会工作,但问题不是解决方法,只是如果有一种方法可以用空格作为第一个字符的变量。
我已经尝试过使用转义字符、单/双引号、子表达式和管道将名称放置到位,但没有关于此的文档,我很确定它只是不受支持:/
另外,以防万一,我仍然使用 5.1.19041.1 版本

最佳答案

Splatting 是一种将参数值的集合作为一个单元传递给命令的方法,它应该使您的命令更短且更易于阅读 .
好吧,PowerShell 提供了一种在变量名中使用特殊字符的方法,但我认为这不是一个好习惯,你应该知道它存在,你不应该使用它。
它使用刹车的简单事实会干扰散列中哈希表的初始化。因此,正如@Roman Kuzmin 提出的那样,它根本不受支持

关于powershell - 以空格开头的 Splatting 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63444768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com