Gibt es eine Möglichkeit, den Inhalt von ZIP-Dateien im Speicher mit Powershell zu bearbeiten?
Ich versuche derzeit, eine Powershell-Funktion zu schreiben, die mit der Ausgabe des Lync-Powershell-Cmdlets "Export-CsConfiguration -AsBytes" funktioniert. Wenn Sie implizites Powershell-Remoting mit den Lync-Cmdlets verwenden, ist das Flag -AsBytes die einzige Möglichkeit, das Cmdlet Export-CsConfiguration zu verwenden, und es gibt ein Byte-Array zurück. Wenn Sie es mit "Set-Content -Encoding Byte" auf die Festplatte schreiben führt zu einer zip-Datei.
Ich frage mich, ob es eine Möglichkeit gibt, den Inhalt des Bytearrays in die beiden Dateien zu erweitern, die in dieser ZIP-Datei enthalten sind, aber nur im Speicher. Ich bin nicht wirklich daran interessiert, die Zip-Datei für lange Zeit zu behalten, da sie sich häufig ändert, und es scheint schrecklich falsch, den Dateiinhalt auf die Festplatte zu schreiben, um ihn direkt wieder einzulesen, damit ich etwas mit dem unkomprimierten Inhalt anfangen kann mir.
Gibt es also eine Möglichkeit, wie folgt vorzugehen, um das Schreiben auf die Festplatte zu vermeiden:
$ZipFileBytes = Export-CsConfiguration -AsBytes
# Made up Powershell function follows:
[xml]DocItemSet = Extract-FileFromInMemoryZip -ByteArray $ZipFileBytes -FileInsideZipIWant "DocItemSet.xml"
# Do stuff with XML here
Anstatt zu tun:
$ZipFileBytes = Export-CsConfiguration -AsBytes | Set-Content -Encoding Byte "CsConfig.zip"
[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory("CsConfig.zip", "C:\Temp")
[xml]$DocItemSet = New-Object Xml.XmlDocument
$DocItemSet.Load("C:\Temp\DocItemSet.xml")
# Do stuff with XML here
Oder bin ich SOL?