首页 文章

Move-Item Path作为变量

提问于
浏览
1

我的部分脚本如下所示:

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

  • 0

    要将表达式用作命令行的一部分(在参数模式下解析),必须使用 (...) 强制新的解析上下文:

    Move-Item -path ($_.FullName+"\*.7z") -destination "$destination"
    

    Get-Help about_Parsing .


    在这种情况下,假设表达式构造一个字符串值,使用带有嵌入式子表达式( $(...) )的可扩展(插值)字符串是一种可行的替代方法,如Ben Richard's answer所示 .

  • 3

    要执行您想要的操作,您可以在字符串中使用表达式,而无需执行字符串连接 .

    # $_.FullName is an expression
    # so to have used inside the quotes, you need to wrap it with $()
    Move-Item "$($_.FullName)\*.7z" $destination
    

相关问题