我的部分脚本如下所示:
move-item -path $_.FullName+"\*.7z" -destination "$destination"
它返回错误:
Move-Item:找不到接受参数'* .7z'的位置参数 . 在行:32 char:4 move-item -path $ _ . FullName“* .7z”-destination“$ destin ... ~~~~~~~~~~~~~~~~~~~~~~ 〜/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分类信息:InvalidArgument :( :) [Move-Item],ParameterBindingException FullyQualifiedErrorId:PositionalParameterNotFound,Microsoft.PowerShell.Commands.MoveItemCommand
但是,如果我将该变量更改为精确值,则可以:
move-item -path "D:\test1\test2\test3\test4\*.7z" -destination "$destination"
问题是什么?
2 回答
要将表达式用作命令行的一部分(在参数模式下解析),必须使用
(...)
强制新的解析上下文:见Get-Help about_Parsing .
在这种情况下,假设表达式构造一个字符串值,使用带有嵌入式子表达式(
$(...)
)的可扩展(插值)字符串是一种可行的替代方法,如Ben Richard's answer所示 .要执行您想要的操作,您可以在字符串中使用表达式,而无需执行字符串连接 .