powershell - 以空格开头的展开变量

标签 powershell parameter-splatting

有没有办法继续使用以空格开头的名称并敲击它?

所以这当然有效:

$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

最佳答案

Splatting 是一种将参数值集合作为一个单元传递给命令的方法,它应该使您的命令更短且更易于阅读

好吧,PowerShell 提供了一种在变量名中使用特殊字符的方法,但我不认为这是一个好的做法,你应该知道它存在,你不应该使用它。

它使用小括号的简单事实会干扰散列表在splatting中的初始化。因此,正如 @Roman Kuzmin 提议的那样,它根本不受支持

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

相关文章:

regex - 使用正则表达式查找文件中的所有邮件地址

powershell - WMI 查询捕获永久消费者的交互式登录事件

powershell - 查找所有名称在列表中带有前缀的文件?

Powershell 飞溅 : pass ErrorAction = Ignore in hash table

powershell - 在PowerShell中使用变量将多个参数传递给外部程序

powershell - 如何通过 PowerShell 中的 splatting 将开关参数作为变量传递?

Python 在一段时间后挂起,按下 [Enter] 后继续

azure - 远程禁用我的 Azure 虚拟机上的网络级安全性