web-dev-qa-db-ja.com

Powershell 4でのファイルのZipおよびUnzip

Windows Server 2012 R2(64ビット)を使用しています。 PowerShellバージョン4が利用可能です。ファイルを圧縮および解凍しようとしています。 Write-Zipコマンドを実行すると、次のエラーがスローされます。

Write-Zip:「Write-Zip」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれていた場合は、パスが正しいことを確認してから再試行してください。

修正するにはどうすればよいですか?サーバーにZip/winrarをインストールする必要がありますか?または、ファイルをZip/unzipする他のコマンドはありますか?

8
Raji

Write-Ziphttp://pscx.codeplex.com/ の一部であると思われるため、使用するには別のインストールが必要です。

ただし、フォルダーからZipアーカイブを作成するだけの場合は、次を実行できます。

$source = "c:\temp\source"
$archive = "c:\temp\archive.Zip"

Add-Type -Assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($source, $archive)

これは、.NET FrameworkクラスCreateFromDirectoryZipFileメソッドを利用します。 $sourceフォルダー内にあるファイルからZipアーカイブを作成し、$archive変数で定義されているアーカイブを作成します。注: ZipFile クラスは.NET Framework 4.5で導入されました

18
kim

カスタムPowerShellオブジェクトNew-Object -ComObject Shell.Applicationを使用し、フラグ付きのファイルをコピーして解凍することができます。

$filePath = "foo.Zip"
$Shell = New-Object -ComObject Shell.Application
$zipFile = $Shell.NameSpace($filePath)
$destinationFolder = $Shell.NameSpace("C:\Program Files\WindowsPowerShell\Modules")

$copyFlags = 0x00
$copyFlags += 0x04 # Hide progress dialogs
$copyFlags += 0x10 # Overwrite existing files

$destinationFolder.CopyHere($zipFile.Items(), $copyFlags)

クレジットソース https://github.com/hashicorp/best-practices/blob/master/packer/scripts/windows/install_windows_updates.ps1#L12-L22

これは、Windowsの「コア」エディションでは機能しません。可能であれば、powershell 5にアップグレードし、Expand Archiveを使用します。

4
spuder

Write-Zipのインストールが正しく実行されなかった可能性があります。環境パラメーターPSModulePathの誤った手動編集が原因である可能性があります。

悪い(元の)値:

PSModulePath = %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\;C:\Program Files\Intel\

適切な値(問題を修正):

PSModulePath = C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\;%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files\Intel\
0
Skylynx

PowerShell V5( https://www.Microsoft.com/en-us/download/details.aspx?id=50395 )にアップグレードできる場合、ネイティブに含まれています。 https://richardspowershellblog.wordpress.com/2014/10/25/powershell-5-Zip-and-unzip/

PowerShellバージョン4の場合、この検索 http://www.powershellgallery.com/items?q=Zip&x=0&y= を使用できる場合があります。また、これはあなたが探していることをするように見えます: https://www.powershellgallery.com/packages/Microsoft.PowerShell.Archive/1.0.1.

モジュールをインストールするには、次を入力する必要があります。

install-module -name <module name>
  • powershellgallery.comは無料でアップロードできるサイトです。モジュールを実行する前に確認してください。

お役に立てれば。ありがとう、ティム。

0
Tim Haintz