我的部分脚本如下所示:
move-item -path $_.FullName+"\*.7z" -destination "$destination"
它返回错误:
Move-Item:找不到接受的位置参数 争论' + *。7z'。在行:32 char:4 + move-item -path $ _。FullName +" *。7z" -destination" $ destin ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ + CategoryInfo:InvalidArgument:(:) [Move-Item],ParameterBindingException + FullyQualifiedErrorId:PositionalParameterNotFound,Microsoft.PowerShell.Commands.MoveItemCommand
但是,如果我将该变量更改为精确值,则可行:
move-item -path "D:\test1\test2\test3\test4\*.7z" -destination "$destination"
有什么问题?
答案 0 :(得分:3)
要将表达式用作命令行的一部分 - 在参数模式中进行解析 - 您必须使用{强制使用新的解析上下文 {1}}:
(...)
在这种情况下,假设表达式正在构造字符串值,则使用带有嵌入式子表达式(Move-Item -path ($_.FullName+"\*.7z") -destination "$destination"
)的可扩展(插值)字符串是一个可行的替代方案,如Ben Richard's answer所示。
答案 1 :(得分:0)
要执行您想要的操作,您可以在字符串中使用表达式,而无需进行字符串连接。
# $_.FullName is an expression
# so to have used inside the quotes, you need to wrap it with $()
Move-Item "$($_.FullName)\*.7z" $destination