2012-10-26 23 views
1

我在PowerShell腳本中使用Move-Item轟炸了以下代碼:不支持給定路徑的格式。我似乎無法弄清楚我做錯了什麼。Powershell在管道中使用參數中的表達式:「Move-Item:不支持給定路徑的格式。」

$computer = gc env:computername 

write-host "Moving archives `r`n" 
gci -Path $logdir -Recurse -Include *.7z | ForEach-Object { 
mi -Path $_.FullName -Destination \\storage\logs\iis\$computer\$_.Directory.Name\ -force -WhatIf 
} 

任何人都可以給我任何指針嗎?

+0

如果您在導致問題時給出了$ _。FullName和$ _。Directory.Name的值,這將有所幫助。 – dugas

+0

謝謝 - 這也是扼流圈,但有一個不同的錯誤:Move-Item:文件名,目錄名稱或卷標語法不正確。 at script.ps1:39 char:4 + mi <<<< -Path「$($ _。FullName)」-Destination「\\ storage \ logs \ iis \ $ co mputer \ $($ _。Directory .NAME)\」 -force + CategoryInfo:WriteError:(C:\的Inetpub \日誌... u_ex12101908.7z:F ileInfo)[移動-項目],IOException的 + FullyQualifiedErrorId:MoveFileInfoItemIOError,Microsoft.PowerShell.Com mands.MoveItemCommand – Brad

+0

$ _。FullName = C:\ inetpub \ logs \ LogFiles \ W3SVC1 \ u_ex12102519.7z(例如) – Brad

回答

4

如果你要使用管道對象$_在表達式中的cmdlet的參數變量,參數必須首先支持管道結合;第二,你必須把參數的腳本塊如:

ls *.txt | mi -Destination {"\\storage\logs\iis\$computer\$($_.Directory.Name)"} -force -WhatIf 
+0

我嘗試了以下方法:ls | move-item -Destination ../$($_.Name),爲什麼它不需要scriptblock(或者是隱式創建一個)? – dugas

+0

@dugas你是說它沒有使用scriptblock的工作?如果你認爲它正在工作,你確定它正在評估$ _。名稱是否正確? –

+0

我錯誤地認爲$ _。名稱正確評估。 – dugas

相關問題