2017-02-13 15 views
0

現在、簡単なPowerShellスクリプトを作成しています。 基本的には、メモ帳からサーバーのリストを取得し、各サーバー上の.zipファイルの解凍を開始し、新しいフォルダーに展開する必要があります。Powershell経由で複数のリモートサーバー上のファイルを解凍する

ただし、このスクリプトはzipファイルの下にあるすべてのファイルを抽出していません。 それは1つのファイルを抽出するだけで、なぜforeachループが正しく動作しないのか分かりません。

この問題については、明記してください。ありがとう。

$servers = Get-Content "C:\tmp\script\new_unzip\servers.txt" 
$Date = ((Get-Date).ToString('dd-MM-yyyy_HH-mm-ss')) 
foreach ($server in $servers) { 
    $shell = new-object -com shell.application 
    $target_path = "\\$server\c$\Temp\FFPLUS_Temp" 
    $location = $shell.namespace($target_path) 
    $ZipFiles = Get-ChildItem -Path $target_path -Filter *.zip 
    $ZipFiles | Unblock-File 

    foreach ($ZipFile in $ZipFiles) { 
     $ZipFile.fullname | out-default 
     $NewLocation = "\\$server\c$\Temp\FFPLUS_Temp\$Date" 
     New-Item $NewLocation -type Directory -Force -ErrorAction SilentlyContinue 
     Move-Item $ZipFile.fullname $NewLocation -Force -ErrorAction SilentlyContinue 
     $NewZipFile = Get-ChildItem $NewLocation *.zip 
     $NewLocation = $shell.namespace($NewLocation) 
     $ZipFolder = $shell.namespace($NewZipFile.fullname) 
     $NewLocation.copyhere($ZipFolder.items()) 
    } 
} 
+0

(http://stackoverflow.com/questions/28448202/i-want-to-extract [私はPowerShellを使用して、一時に指定されたディレクトリ内のすべての.zipファイルを抽出する]の可能性のある重複-all-zip-files-in-a-given-temp-using-powershell) – BenH

+0

複数のリモートサーバー上でファイルを展開しようとしていますが、3つのファイルから1つのファイルのみを解凍します。私は何のエラーも受けなかったが、どういうわけかそれは正しくない。 –

+0

私は、代わりの方法として、.NET Framework 4.5に含まれているExtractToDirectoryメソッドを使用しています。 –

答えて

0
$servers = Get-Content "C:\tmp\script\updated\servers.txt" 
$Date = ((Get-Date).ToString('dd-MM-yyyy_HH-mm-ss')) 

foreach ($server in $servers) 
{ 

$zipFolder = "\\$server\c$\Temp\FFPLUS_Temp" 

Add-Type -assembly System.IO.Compression.Filesystem 

$zipFiles = Get-ChildItem -Path $zipFolder -Filter *.zip 

foreach($zip in $zipFiles) 
    { 
     $destPath = "\\$server\c$\Temp\FFPLUS_Temp\$Date"  

     New-Item -ItemType Directory $destPath 

     [io.compression.zipfile]::ExtractToDirectory([string]$zip.FullName, "$destPath") 

     Move-Item $zip.fullname $destPath -Force -ErrorAction SilentlyContinue   
    }   

} 
+0

これは、複数のサーバーで同じファイルを解凍する別の方法です –

関連する問題