지난 주 이상한 문제가 발생하여 해결책을 찾을 수 없습니다. 이 스크립트의 수정 된 버전 : 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
나는 아무 문제없이 복사 항목 cmd를 실행 할 수있는 대화 형 쉘에서 변수를 설정합니다. 동일한 인수를 사용하지만 변수가 아닌 경우 파일을 복사 할 수 있습니다. 오류가 발생하는 경우에만 스크립트 내에서 실행됩니다.
다른 계정으로 실행 해 보았습니다.이 계정은 모두 관리자입니다. 변경없이 -literalPath에 -path 인수를 변경했습니다. 객체가 값이 변경되지 않고 모든 것이 잘 보이는지 확인하기 위해 출력을 추가했습니다. 실패한 서버는 미국에 있지 않기 때문에 언어 설정이 다를 수 있지만 변수가 잘 보입니다. Windows 2003 서버에만 문제가 있으며 2008 서버에는 문제가 없습니다.
나는 아이디어가 부족합니다.
여기 Copy-Item
를 호출하기 전에,
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