上週出現了一個奇怪的問題,無法找到解決方案。我有這個腳本的修改版本:http://technet.microsoft.com/en-us/magazine/2009.07.heyscriptingguy.aspx在500臺服務器上運行我的日誌備份。上週,EMEA地區的6臺服務器決定不允許複製文件。Powershell無法複製現有文件
該腳本一次處理一個腳本並且正在使用copy-item cmdlet失敗。該文件在遠程服務器上存在。看看下面的輸出:
PS C:\> BackUpAndClearEventLogsDebug.ps1 -computers bud1s001 -LogsArchive "\\srv1s001\d$\Log_Backups\Test"
+ Processing bud1s001
This is the Backupeventlogs function and we're about to copy \\bud1s001\c$\Windows\temp\bud1s001\Application.evt
This is the Copyeventlogs function and we're about to copy \\bud1s001\c$\Windows\temp\bud1s001\Application.evt
Copy-Item : Cannot find path '\\bud1s001\c$\Windows\temp\bud1s001\Application.evt' because it does not exist.
At C:\Sched\LOG_BACKUPS\BackUpAndClearEventLogsDebug.ps1:132 char:2
+ Copy-Item -path $path -dest "$LogsArchive\$folder"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (\\bud1s001\c$\W...Application.evt:String) [Copy-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
PS C:\> ls \\bud1s001\c$\Windows\temp\bud1s001\Application.evt
Directory: \\bud1s001\c$\Windows\temp\bud1s001
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/17/2014 10:17 AM 5242836 Application.evt
如果我在交互式shell中設置變量,我可以運行copy-item cmd而不會出現任何問題。如果我使用相同的參數而不是變量,我可以複製這些文件。只有在腳本中運行時纔會發生故障。
我試過在不同的帳戶下運行,所有這些都是管理員。我改變了-LiteralPath的-path參數。我已經添加了輸出以確保該對象沒有改變其值並且一切看起來都很好。失敗的服務器可能具有不同的語言設置,因爲它們不在美國,但該變量看起來不錯。只有Windows 2003服務器有問題,而不是2008服務器的問題。
我出來的想法,開放的建議。
下面是該腳本的確切功能與調用參數
Copy-EventLogsToArchive -path $path -Folder $Folder
Function Copy-EventLogsToArchive($path, $folder)
{
Write-Host " "
write-host "This is the Copyeventlogs function and we're about to copy $path"
Copy-Item -path $path -dest "$LogsArchive\$folder"
} # end Copy-EventLogsToArchive
感謝您的幫助。在該語句中添加Test-Path之後,powershell沒有看到該文件。我在函數中添加了一些dir語句,並最終注意到它所查找的文件不在那裏。我增加了一個完整的60秒睡眠,現在它可以工作。在命令實際完成之前,以前的WMI BackupEventLog會返回一個返回值。複製功能會在文件存在之前或備份完成之前嘗試複製該文件。爲故障服務器添加了一條if語句,需要找出命令早期給出ReturnValue的原因。 – zjherner