Powershell 字符串变量作为获取ChildItem的参数

Powershell 字符串变量作为获取ChildItem的参数,powershell,powershell-2.0,Powershell,Powershell 2.0,为什么这样做有效: PS C:\Users\user> Get-ChildItem '\\COMPUTER\folder with spaces' 但这并不是: PS C:\Users\user> $a = "'\\COMPUTER\folder with spaces'" PS C:\Users\user> Get-ChildItem $a Cannot find path 'C:\Users\user\'\COMPUTER\folder with spaces'' be

为什么这样做有效:

PS C:\Users\user> Get-ChildItem '\\COMPUTER\folder with spaces'
但这并不是:

PS C:\Users\user> $a = "'\\COMPUTER\folder with spaces'"
PS C:\Users\user> Get-ChildItem $a

Cannot find path 'C:\Users\user\'\COMPUTER\folder with spaces''
because it does not exist

如何使用变量来实现后者的效果?

进一步的实验揭示了这个解决方案:

PS C:\Users\user> $a = "\\COMPUTER\folder with spaces"
PS C:\Users\user> Get-ChildItem "$a"

嵌套引号将成为字符串的一部分

  • Get ChildItem'\\COMPUTER\folder with spaces'

    这将从主机
    计算机
    上带有空格的共享
    文件夹中读取子项

  • Get ChildItem“\\COMPUTER\folder with spaces”

    这将做同样的事情,但双引号还允许您在字符串中使用变量,例如:
    “\\$computer\folder with spaces”

  • Get ChildItem“\\COMPUTER\folder with spaces”

    但是,这将在本地计算机上的当前工作目录中查找文字名为“
    ”\\COMPUTER\folder with spaces“
    (包括单引号)的文件或文件夹