我想写一个脚本,收集服务器名称列表,然后遍历每个服务器名称,并抓住第二个目录中的最新文件夹,重命名它,并将其复制到另一台服务器。我在一个命令中遇到了麻烦,我不知道什么是分离它并使其正常工作的最佳方式。在尝试不同的事情时我会遇到错误,主要原因是“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