PowerShell $($a) 有意外结果

标签 powershell

PowerShell 4 ISE

PS> $MyFile = "MyFile.txt"
PS> $a = "dir $MyFile"

PS> $a
> dir MyFile.txt 

PS> $($a)
> dir MyFile.txt 

为什么$($a)不执行命令“dir MyFile.txt”

提前致谢。

最佳答案

这是 powershell 中的预期行为。您必须记住您要分配给 $a 的内容,在本例中是 [String]

$(...) 语法确实执行 ... 并返回结果,但在这里它是“执行”字符串文字,就像如果您已将其输入命令行,这是关键带引号

您可能一直认为它的工作方式更像 bash,确实如此,但不完全是因为您无法将命令分配给变量;它们必须在脚本中逐字输入:

$(dir MyFile.txt)

另一方面,你可以这样做:

$(Invoke-Expression $a)

但通常,当您将复杂的内容嵌入字符串文字时,您只需要 $() 语法:

"I like files named $(dir MyFile.txt)"

关于PowerShell $($a) 有意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33424797/

相关文章:

arrays - 获取随机和从阵列中删除

powershell - 抑制 powershell 输出消息

powershell - 将测试连接错误转换为消息

powershell - 如何将函数放入我希望能够直接调用的 Powershell 脚本文件中?

collections - 通过System.Collections.Queue传递对象时丢失类型信息

powershell - 图形 API - Azure AD B2C - 引发错误 - 未找到标识符的应用程序

powershell 'You cannot call a method on a null-valued expression'

powershell - 如何在 PowerShell 中执行带有参数的外部程序?

powershell - Powershell防止重复的对象键

powershell - NuGet:如何使用 Install.ps1 文件更改文件的属性?