2012-10-01 20 views
11

Dosya adındaki özel karakterleri, dosya adına göre belirli bir hedefe taşıdıktan sonra tüm postaları taşımaya çalışıyorum. FOLDLIST, koşul değişkeni ve hedef katlama adının bulunduğu bir dizidir.Alma 'Path' parametresine argüman bağlanılamıyor çünkü bu, null hatasıdır powershell

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 
      } 
      } 

    } 

Bu hatayı alıyorum. Ben hata yaptım nerede bildiriniz ..

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 

cevap

2

Benim tahminim $ _. Adı yok olmasıdır.

olsam, ben İMKB'de içine senaryoyu getirmek istiyorum ve daha sonra $ değerine _

+0

evet .. Doğru ... Sorun çözüldü. Çok teşekkür ederim.. – Tamilan

3

$_ akım boru hattı aktif nesnedir. $FOLDLIST | ... ile yeni bir boru hattı oluşturdunuz, böylece $_, bu dizideki boru hattından geçen nesneleri temsil ediyor. Bir değişkene ilk boru hattından FileInfo nesneyi saklamak ve daha sonra örneğin bu değişkeni referans olmalıdır .:

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

Keith, aynı yapıyorum bakmak oraya gelene kadar bunu satır satır çalıştırmak tavsiye ettin. \t $ CXR = $ _ [0] \t $ STAT = $ _ [1] ve $ DIR = $ _ [2]. Bilgiyi alıp bu değişkenleri saklıyorum ve bunu kullanıyorum .. – Tamilan

+0

Teşekkür ederim Çok fazla .. İlk döngüden dolayı. Haklısın. – Tamilan

İlgili konular