[powershell] Getting Cannot bind argument to parameter 'Path' because it is null error in powershell

I'm trying to move all the mails after removing the special characters in the filename to some destination based on the filename. FOLDLIST is an array, where I'm having the condition variable and destination 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
            }
            }

    }

I'm getting this error. Please advise where I did mistake..

    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

This question is related to powershell

The answer is


  1. PM>Uninstall-Package EntityFramework -Force
  2. PM>Iinstall-Package EntityFramework -Pre -Version 6.0.0

I solve this problem with this code in NugetPackageConsole.and it works.The problem was in the version. i thikn it will help others.


$_ is the active object in the current pipeline. You've started a new pipeline with $FOLDLIST | ... so $_ represents the objects in that array that are passed down the pipeline. You should stash the FileInfo object from the first pipeline in a variable and then reference that variable later e.g.:

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