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

问题描述

我有在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的循环变量,但上面的行仍然没有显示任何内容

我如何实现我想要的?

解决方法

使用 (...) 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...