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. Where did I make a 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
My guess is that $_.Name
does not exist.
If I were you, I'd bring the script into the ISE and run it line for line till you get there then take a look at the value of $_
.