我想寫一個腳本,收集服務器名稱列表,然後遍歷每個服務器名稱,並抓住第二個目錄中的最新文件夾,重命名它,並將其複製到另一臺服務器。我在一個命令中遇到了麻煩,我不知道什麼是分離它並使其正常工作的最佳方式。在嘗試不同的事情時我會遇到錯誤,主要原因是「rename-item:無法評估參數」NewName「,因爲它的參數被指定爲腳本塊並且沒有輸入」。下面是導致此錯誤的代碼片段:Powershell:Get-ChildItem - 管道重命名 - 項目和複製 - 項目
$serverNames = Get-Content -Path "C:\servers.txt"
foreach ($serverName in $ServerNames) {
$reportServer = "a56741035"
Get-ChildItem "\\$($serverName)\d$\mposlogs\device" | where { $_.PSIsContainer } | Sort CreationTime -Descending | Select -Skip 1 | Select -First 1 | Rename-Item -NewName { "$serverName" + "_" + $_.Name } | Copy-Item $_.FullName -Destination "\\$($reportServer)\c$\temp\mpos\logs" }
另一個是「不能綁定參數參數‘路徑’,因爲它是空」。這裏是導致此錯誤的代碼:
$serverNames = Get-Content -Path "C:\servers.txt"
foreach ($serverName in $ServerNames) {
$reportServer = "a56741035"
Get-ChildItem "\\$($serverName)\d$\mposlogs\device" | where { $_.PSIsContainer } | Sort CreationTime -Descending | Select -Skip 1 | Select -First 1 | ForEach-Object { Rename-Item -NewName { "$serverName" + "_" + $_.Name } | Copy-Item $_.FullName -Destination "\\$($reportServer)\c$\temp\mpos\logs" } }
我覺得我非常接近,只是看不到東西。非常感謝任何幫助,非常感謝。祝你有美好的一天。
編輯,包括NEWEST CODE:
Get-ChildItem "\\$($serverName)\d$\mposlogs\device" | where { $_.PSIsContainer } | Sort CreationTime -Descending | Select -Skip 1 | Select -First 1 | ForEach-Object { Rename-Item -Path $_.FullName -NewName ("$serverName" + "_" + $_.Name) ; Copy-Item $_.FullName -Destination "\\$($reportServer)\c$\temp\mpos\logs" }
CODE FOR最新評論:
Get-Child-Item "\\$serverName\d$\mposlogs\device" | where {$_.PSIsContainer} | Sort CreationTime -Descending | Select -Skip 1 | Select -First 1 | ForEach-Object { Rename-Item -Path $_.FullName -NewName ("$serverName" + "" + $.Name) ; Copy-Item ("$serverName" + "" + $.Name) -Destination "\\$reportServer\c$\temp\mpos\logs" }
我認爲這是非常接近釘釘!它不完成的唯一部分是文件副本。它不會出錯......它只是不復制文件。 :) 有任何想法嗎?謝謝! – LilithGoddess
哦,哇,沒有看到管道是如何在那裏建立的,問題是'rename-item'沒有將對象傳遞給'Copy-Item',你可以克服2種方法,或者添加一個' -PassThru'切換到你的'Rename-Item'或者只是把你的'|'改成''',然後將拷貝作爲第二個命令在foreach中執行而不是管道元素 –
GETTING SO CLOSE !! !現在看起來它正在重命名該文件,但在重命名之前嘗試複製該文件? (找不到路徑xxxxx,因爲它不存在) - 當我查看文件夾時,它已被正確地重命名,但錯誤實際上是在文件夾被重命名之前調出該文件夾...是否有意義? – LilithGoddess