我有在Windows 10 64位操作系统上运行的Powershell v5。
我还有一个不错的技巧,就是通过转义诸如$Path.Replace('[','
[').Replace(']',']')
之类的代号来使方括号的路径与Powershell兼容。 ,所以我凭直觉就想到了,为什么不让它像下面这样使用:
Function GetEscapedPath($Path) {
Return $Path.Replace('[','`[' ).Replace(']','`]')
}
现在,我想将此函数的返回值用作Remove-Item
函数或任何基于文件全路径的函数的输入,但这不起作用:
Remove-Item GetEscapedPath $File.Fullname -WhatIf
$File
是Get-ChildItem
上Fullname
的循环变量,但上面的行仍然没有显示任何内容。
我如何实现我想要的?
答案 0 :(得分:3)
使用 (...)
(grouping operator )将命令或表达式的输出作为参数传递给另一个命令:
# Positionally binds to the -Path parameter, which interprets its argument
# as a wildcard pattern.
Remove-Item (GetEscapedPath $File.Fullname) -WhatIf
但是,在您的特殊情况下,不需要 函数来转义文件系统路径,以便按字面意义处理(普通) ):只需使用与文件相关的各种cmdlet的-LiteralPath
参数即可:
Remove-Item -LiteralPath $file.FullName -WhatIf
有关更多信息,请参见this answer。