Powershell函数字符串输出作为基于文件的函数的输入

时间:2020-09-24 23:07:49

标签: function powershell loops input get-childitem

我有在Windows 10 64位操作系统上运行的Powershell v5。

我还有一个不错的技巧,就是通过转义诸如$Path.Replace('[',' [').Replace(']',']')之类的代号来使方括号的路径与Powershell兼容。 ,所以我凭直觉就想到了,为什么不让它像下面这样使用:

Function GetEscapedPath($Path) {
    Return $Path.Replace('[','`[' ).Replace(']','`]')
}

现在,我想将此函数的返回值用作Remove-Item函数或任何基于文件全路径的函数的输入,但这不起作用:

Remove-Item GetEscapedPath $File.Fullname -WhatIf

$FileGet-ChildItemFullname的循环变量,但上面的行仍然没有显示任何内容。

我如何实现我想要的?

1 个答案:

答案 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