Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取无法将参数绑定到参数';路径';因为它在powershell中是空错误_Powershell - Fatal编程技术网

获取无法将参数绑定到参数';路径';因为它在powershell中是空错误

获取无法将参数绑定到参数';路径';因为它在powershell中是空错误,powershell,Powershell,在删除文件名中的特殊字符后,我试图根据文件名将所有邮件移动到某个目标。 FOLDLIST是一个数组,其中包含条件变量和目标foldername Set-Location 'C:\Users\abrahame\Desktop\Work\PSG Mail Movement\Mail' $DESLOC="c:\Temp\ua-closed bugs" $FOLDLIST = @(("UA", "CLOSE", "ua-closed bugs"), ("VS", "CLOSE"

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

    Set-Location 'C:\Users\abrahame\Desktop\Work\PSG Mail Movement\Mail'
    $DESLOC="c:\Temp\ua-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:\Temp\ua-closed bugs\ua-closed bugs\RE  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:\Users\abrahame\Desktop\Work\PSG Mail Movement\mailmove_multdimentional.ps1:24 char:5
    +         mv <<<<  $_.Name $DPATH
        + CategoryInfo          : InvalidData: (:) [Move-Item], ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.MoveItemCom
       mand
67
UA-关闭
c:\Temp\ua closed bugs\ua closed bugs\RE CLOSE OA TICKET 10350 OA UAT阶段HP FARES 1.msg
移动项:无法将参数绑定到参数“Path”,因为它为空。
在C:\Users\abrahame\Desktop\Work\PSG Mail Movement\mailmove\u multdiIndicational.ps1:24 char:5

+mv
$\uu
是当前管道中的活动对象。您已使用
$FOLDLIST |…
启动了一个新管道,因此
$\uu
表示该数组中沿管道传递的对象。您应该将来自第一个管道的FileInfo对象隐藏在变量中,然后稍后引用该变量,例如:

write-host $NEWN.Length
$file = $_
...
Move-Item $file.Name $DPATH

我的猜测是$\名称不存在

如果我是你,我会把脚本放到ISE中,一行一行地运行,直到你到达那里,然后看看脚本的值$_

  • PM>卸载包EntityFramework-强制
  • PM>Iinstall包EntityFramework-6.0.0之前的版本
  • 我在NugetPackageConsole中用这段代码解决了这个问题。它可以正常工作。问题出在版本中。
    我认为这会帮助其他人。

    Keith,我正按照你的建议做。$CXR=$\[0]$STAT=$\[1]和$DIR=$\[2]。我把这些信息存储在这些变量中,并使用它们,非常感谢。。这是因为第一个for循环。你是对的。在我的例子中,这是正确的,因此使用了条件逻辑,比如
    If($var){$var |%{Remove Item-Path$|.FullName-Recurse-Force-Confirm:$False}。因此,它只会在
    $var
    为true时执行此操作,如果它不是true或null,它仍然会在条件逻辑或其他之后继续执行。