这是一个相对较短的,但似乎无法弄清楚计算机如何能够看到不同的内容。我有一个文件夹,我想删除与Powershell,但Remove-Item
函数抛出一个错误,因为路径包含Program Files (x86)
。
见下面的代码:
Invoke-Command -ComputerName $computer {Remove-Item -Path C:Program Files (x86)MicrosoftTest -Force -Verbose}
它不喜欢程序文件在x86周围有括号的事实。当我在路径周围加上引号时,它根本无法识别它。
我怎样才能绕过这个?
即使使用单引号也会出错:
Invoke-Command -ComputerName $computer {Remove-Item -Path 'C:Program Files (x86)MicrosoftTest' -Force -Verbose}
Cannot find path 'C:Program Files (x86)MicrosoftTest' because it does not exist. + CategoryInfo : ObjectNotFound: (C:Program File...test:String) [Remove-Item], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand + PSComputerName : MKC-03812
这可能会有所帮助https://learn.microsoft.com/en us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell - 7.2
但是答案是
Invoke-Command -ComputerName $computer {Remove-Item -Path 'C:Program Files (x86)MicrosoftTest' -Force -Verbose}
你的问题是使用双引号。使用单引号停止将圆括号解释为单独的子句/语句。
Invoke-Command -ComputerName $computer {Remove-Item -Path 'C:Program Files (x86)MicrosoftTest' -Force -Verbose}
同样,如果您的命令包含复杂的或嵌套的引号,您可能更幸运地使用-LiteralPath
参数代替。
Invoke-Command -ComputerName $computer {Remove-Item -LiteralPath 'C:Program Files (x86)MicrosoftTest' -Force -Verbose}