Powershell 函数字符串输出作为基于文件的函数的输入
Powershell Function String output as input to File based functions
我有 Powershell v5 运行 Windows 10 64Bit OS.
而且我还有一个很好的技巧,通过使用 $Path.Replace('[','
[' ].Replace(']',']')
,凭直觉我想,为什么不把它变成像下面一样的函数呢:
Function GetEscapedPath($Path) {
Return $Path.Replace('[','`[' ).Replace(']','`]')
}
现在我想使用此函数 return 值作为 Remove-Item
函数或任何基于文件完整路径的函数的输入,但这不起作用:
Remove-Item GetEscapedPath $File.Fullname -WhatIf
$File
是 Get-ChildItem
上循环的变量,选择了 Fullname
,但上面的行仍然没有打印任何内容。
我怎样才能达到我想要的?
使用(...)
,grouping operator 将命令或表达式的输出作为参数传递给另一个命令:
# Positionally binds to the -Path parameter, which interprets its argument
# as a wildcard pattern.
Remove-Item (GetEscapedPath $File.Fullname) -WhatIf
但是,在您的特定情况下,函数 不需要 转义 file-system路径以便按字面意义(逐字):只需使用各种 file-related cmdlet 的 -LiteralPath
参数 即可:
Remove-Item -LiteralPath $file.FullName -WhatIf
有关详细信息,请参阅 。
我有 Powershell v5 运行 Windows 10 64Bit OS.
而且我还有一个很好的技巧,通过使用 $Path.Replace('[','
[' ].Replace(']',']')
,凭直觉我想,为什么不把它变成像下面一样的函数呢:
Function GetEscapedPath($Path) {
Return $Path.Replace('[','`[' ).Replace(']','`]')
}
现在我想使用此函数 return 值作为 Remove-Item
函数或任何基于文件完整路径的函数的输入,但这不起作用:
Remove-Item GetEscapedPath $File.Fullname -WhatIf
$File
是 Get-ChildItem
上循环的变量,选择了 Fullname
,但上面的行仍然没有打印任何内容。
我怎样才能达到我想要的?
使用(...)
,grouping operator 将命令或表达式的输出作为参数传递给另一个命令:
# Positionally binds to the -Path parameter, which interprets its argument
# as a wildcard pattern.
Remove-Item (GetEscapedPath $File.Fullname) -WhatIf
但是,在您的特定情况下,函数 不需要 转义 file-system路径以便按字面意义(逐字):只需使用各种 file-related cmdlet 的 -LiteralPath
参数 即可:
Remove-Item -LiteralPath $file.FullName -WhatIf
有关详细信息,请参阅