获取无法将参数绑定到参数'Path',因为它在 powershell 中为 null 错误



根据文件名删除文件名中的特殊字符后,我正在尝试将所有邮件移动到某个目的地。FOLDLIST 是一个数组,其中我有条件变量和目标文件夹名称。

    Set-Location 'C:UsersabrahameDesktopWorkPSG Mail MovementMail'
    $DESLOC="c:Tempua-closed bugs"
    $FOLDLIST = @(("UA", "CLOSE",  "ua-closed bugs"), ("VS", "CLOSE", "vs-closed-bugs"), ("CM", "CLOSED", "cm - closed-bugs"))
    gci | Foreach-object { $NEWN = $_.Name -replace '&',' ' -replace '_', ' ' -replace '#', ' ' -replace '!', ' '  -replace '@', ' '  -replace '$', ' '  -replace '%', ' '  -replace '^', ' '  -replace '&', ' '  -replace '(', ' ' -replace ')', ' '  -replace '[', ' ' -replace ']', ' ' -replace '{', ' '  -replace '}', ' ' -replace '-', ' ';
            write-host $NEWN.Length
            if($NEWN.Length -gt  70){
                    $NEWN="$NEWN.Substring(1,70)"
                    $NEWN=$NEWN.msg

            }
            $FOLDLIST | ForEach-Object {
            $CXR=$_[0]
            $STAT=$_[1]
            if ($NEWN -match ("$CXR") -and $NEWN -match ("$STAT")){
            write-host $CXR -  $STAT
                    $DIR=$_[2]
                    $NEWN=$NEWN.trim()
                    $DPATH="$DESLOC$DIR$NEWN"
                    write-host $DPATH
                    mv $_.Name $DPATH
            }
            }
    }

我收到此错误。请告知我哪里做错了..

    67
    UA - CLOSE
    c:Tempua-closed bugsua-closed bugsRE  CLOSE OA TICKET   10350   OA   UAT PHASE FOR HP FARES  1 .msg
    Move-Item : Cannot bind argument to parameter 'Path' because it is null.
    At C:UsersabrahameDesktopWorkPSG Mail Movementmailmove_multdimentional.ps1:24 char:5
    +         mv <<<<  $_.Name $DPATH
        + CategoryInfo          : InvalidData: (:) [Move-Item], ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.MoveItemCom
       mand

我的猜测是$_。名称不存在。

如果我是你,我会将脚本带入ISE并逐行运行它,直到你到达那里,然后看看$_的值

$_是当前管道中的活动对象。 你已使用 $FOLDLIST | ... 启动了新管道,因此$_表示该数组中沿管道传递的对象。您应该将第一个管道中的 FileInfo 对象存储在变量中,然后稍后引用该变量,例如:

write-host $NEWN.Length
$file = $_
...
Move-Item $file.Name $DPATH
  1. PM>卸载包实体框架 - 强制
  2. PM>安装包实体框架 - 版本 6.0.0 之前

我在NugetPackageConsole中用这段代码解决了这个问题,它可以工作。问题出在版本上。我认为它会帮助别人。

最新更新