From PS to Zip

Dziś zaprezentuję jak przy pomocy PowerShella można zarządzać plikami Zip. Wbrew pozorom jest to bardzo prosty zabieg składający się z trzech etapów:

  1. Stworzenia pliku z odpowiednim nagłówkiem (o ile już nie istnieje)
  2. Otwarcia tego pliku
  3. Skopiowania zawartości

Ad 1) W celu stworzenia naszego pliku zip posłużymy się standardową komendą Set-Content, dzięki której wpisujemy nagłówek pliku:

$zipfile = <ścieżka do nie istniejącego narazie pliku zip>
Set-Content zipfile ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))

Ad 2) Wykorzystujemy klasę Microsoft COM (Component Object Model) Shell.Application w celu odpowiedniego otwarcia pliku:

$shellApplication = New-Object -ComObject Shell.Application
$zipPackage = $shellApplication.NameSpace($zipfile)

Ad 3)Wykorzystując metodę CopyHere obiektu zipPackage kopiujemy zawartość interesujących nas plików do paczki zip:

$file = <ścieżka do interesującego nas pliku>
$zipPackage.CopyHere($file)

W wielkim skrócie to tyle. Poniżej jednak przedstawię gotowe funkcję, które wykorzystuję gdy zajdzie potrzeba pracy z plikami zip. W szczególności przydatne na maszynach w wersji Core, gdzie nie ma dostępu do explorera aby móc coś wypakować lub spakować.

Czytaj dalej

Reklamy