ich habe ein Problem mit ZIP-Komprimierung in einem Powershell-Skript. Der Code-Schnipsel in Frage:Powershell-Fehler beim geladenen Assembly mit
$zipfile = $targetFile
$file = 'Script.ps1'
$stream = New-Object IO.FileStream($zipfile, [IO.FileMode]::Open)
$mode = [System.IO.Compression.ZipArchiveMode]::Update
$zip = New-Object IO.Compression.ZipArchive($stream, $mode)
($zip.Entries | ? { $file -contains $_.Name }) | % { $_.Delete() }
# Add a newer Script.ps1 file with the new Comment Based Help template.
$newFile = "$PSScriptRoot\$file"
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($zip,$newFile,"Script.ps1","optimal")
# Clean up.
$zip.Dispose()
$stream.Close()
$stream.Dispose()
Der Code versucht, eine Datei aus dem Archiv zu löschen und dann eine neuere Version der gleichen Datei. Wenn ich das Skript ausführe, erhalte ich Folgendes:
[FEHLER] Typ [System.IO.Compression.ZipArchiveMode] kann nicht gefunden werden. Stellen Sie sicher, dass die [ERROR] Baugruppe, die diese Art enthält, ist geladen. [FEHLER] Um C: \ xxxxx \ xxxxx \ xxxxx \ PowerShellIDEInstaller \ PowerShel [FEHLER] lIDEInstallers \ VSInstallCBH.ps1: 141 Zeichen: 2 [FEHLER] + $ mode = [System.IO.Compression.ZipArchiveMode] :: Update [ERROR] +
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ [ERROR] + KategorieInfo: InvalidOperation: (System.IO.Compression.ZipArch [FEHLER] iveMode: TypeName) [], RuntimeException [FEHLER] + FullyQualifiedErrorId: TypeNotFound [ERROR]
Wenn ich es jedoch erneut ausführen, wird es ordnungsgemäß funktionieren. fand ich ein paar Beiträge (this und this), die von ähnlichen Problemen sprach. Ich verwende derzeit:
Add-Type -AssemblyName System.IO.Compression.FileSystem
An der Spitze des Skripts. Ich fand auch this post, die vielversprechend aussah, aber hat nicht funktioniert. Ich sollte auch hinzufügen, dass das Problem in der ISE, Visual Studio und der Eingabeaufforderung auftritt. Der Code funktioniert, wenn ich ihn in einer der Umgebungen ein zweites Mal benutze.
Ich bin verwirrt und ratlos. Kann mir jemand sagen, warum das passiert?