2014-10-21 1 views
1

원격 시스템의 폴더 내용을 가져 오려고 할 때 폴더에 수백 개의 파일이있는 경우 다음 명령을 실행하기 전에 항상 명령이 실행됩니다. 내 코드에 문제가 있습니까? 끊어지지 않을만큼 효율적인 무언가가 있습니까? 나는 코드가 딸꾹질없이 실행하는 로컬 시스템에서 같은 명령을 실행하면Powershell에서 원격 시스템의 폴더 내용을 가져 오는 것이 느립니다.

$targetFolder = "\\someServer\d$\someFolder" 
write-host $targetFolder 
$Files = Get-ChildItem $targetFolder | Where {$_.LastWriteTime -le (Get-Date).AddDays(-1)} 

:

여기 내 코드입니다.

+0

혹시 invoke-command를 사용하여 원격 시스템에서 get-childitem을 호출 해 보았습니까? – Paul

+0

원격 시스템은 Powershell이없는 이전 시스템이므로 Invoke-Command를 사용할 수 없다고 생각합니다. – mrTomahawk

+0

그러면 다른 시스템에 powershell을 설치하면 현재 코드가 고착 된 것 같아요? $ targetFolder가 smb 공유라고 가정하면 psdrive로 마운트하려고 시도하고 get-childitem이 더 빨리 수행되는지 확인할 수 있습니다. – Paul

답변

0

슬픈 듯이 내 원격 시스템에 Powershell이 ​​없기 때문에 Powershell을 넣을 수 없을 것 같아서 FileSystemObject의 COM 개체를 사용하여 GCI가 훨씬 빠르다고 생각했습니다. 여기에 내가 대신 사용하고있는 코드가있다 :

$fso = New-Object -ComObject Scripting.FileSystemObject 
$targetFolder = "\\someServer\d$\someFolder" 
write-host $targetFolder 
$folder = $fso.GetFolder($targetFolder) 
$files = $folder.Files 
foreach($file in $files){ 
if ($file.DateLastModified -le (Get-Date).AddDays(-1)){write-host $file.path} 
} 
관련 문제