2013-04-26 3 views
0

테스트 경로가 파이프 라인에서 작동하는 데 문제가 있습니다. 어떤 이유로 명령은 항상 false로 평가되고 IF 문에 포함 된 명령을 실행합니다.테스트 경로가 작동하지 않습니다.

코드는 다음과 같습니다

$BACKUPFOLDER = "F:\TEST\Old\" 
Get-ChildItem "$SrcFolder\*.pgp" | Where-Object {!$_.PsIsContainer} | ForEach-Object { 
     Add-Content -Path $LOGFILE -Value "`r`n - Decrypting file $_ -" 
     Decrypt-Files $_ "$SrcFolder$($_.BaseName)" $Credential $DecryptionLogFile   

     if (!(Test-Path "$BackupFolder$($_.BaseName)")) { 
      Add-Content -Path $LOGFILE -Value "`n`rMoving $_ to $BackupFolder" 
      Move-Item $_ $BackupFolder 
     } 
     else { 
      Add-Content -Path $LOGFILE -Value "`n`rCould not move $_ to $BackupFolder. Destination file already exists." 
     } 

내가 오류가 이동 품목 명령입니다 :

Move-Item : Cannot create a file when that file already exists. 

At F:\Scripting\1-Dev\Modules\Include.ps1:505 char:26 
+     Move-Item <<<< $_ $BackupFolder 
+ CategoryInfo   : WriteError: (F:\TEST...201301.xlsx.pgp:FileInfo) [Move-Item], IOException 
+ FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand 

파일이 이미 백업 폴더에 존재하기 때문에 내가 혼란 스러워요, 어떤 이유로 스크립트는 여전히 IF 문을 통과하고 move-item 명령을 실행합니다. 내 구문이 Test-Path에 좋지 않습니까?

해독하는 파일의 이름은 VPAS-201301.xlsx.pgp이며 VPAS-201301.xlsx 파일의 이름은 지정됩니다.

답변

1

$_.BaseName (즉, 확장명이없는 파일의 이름)을 테스트하고 있습니다. $_.Name을 사용하면 예상되는 결과를 얻게됩니다.

+0

감사합니다. 그것은 매우 간단합니다. :) – mack

관련 문제