Software Pakete löschen

Löscht das angegebene Software Paket-Objekt.


Beispiele:


Hinweis: Voraussetzung für die Beispiele ist ein verbundenes PowerShell-Laufwerk.


Beim Löschen von Software Paketen gelten die gleichen Restriktionen wie beim Anlegen, das heißt, eventuell notwendige Dateisystemoperationen müssen vom Benutzer separat durchgeführt werden.


Da jedoch ein inkonsistenter Zustand erzeugt wird, falls nur die Datenbankobjekte und nicht die zugehörigen Dateisystemobjekte gelöscht werden, müssen Sie das Löschen der Datenbankeinträge bewusst erzwingen. Dazu rufen sie das Remove-EmdbSoftwarePackage-Cmdlet mit dem zusätzlichen Parameter "-CustomDepotManagement" auf. Analog dazu die Delete()-Methode mit dem Parameter $True.


Löschen des Software Pakets "MyEscriptPackage" im aktuellen Kontext:


Cd "emdb:\rootDSE\Global Software Library\Application Library\Settings"

Remove-EmdbSoftwarePackage "MyEscriptPackage" -CustomDepotManagement


Um dasselbe Software Paket stattdessen mit Hilfe der Delete()-Methode wieder zu entfernen, kann das folgende Kommando abgesetzt werden:


$MySoftwarePackage = Get-EmdbSoftwarePackage "emdb:\rootDSE\Global Software Library\Application Library\MyEScriptPackage"

$MySoftwarePackage.Delete($True)


Löschen des Software Pakets "Global Software Library\Application Library\Adobe\Adobe Reader\Adobe Reader 9.0" mit Hilfe des Remove-Item Cmdlets:


Remove-Item "emdb:\rootDSE\Global Software Library\Application Library\Adobe\Adobe Reader\Adobe Reader 9.0"


Tipp: Statt Remove-Item kann auch der kürzere Alias DEL verwendet werden.


Hinweis: Bei Remove-Item und DEL muss das Löschen nicht erzwungen werden, jedoch erhalten Sie auch keinen Hinweis darauf, dass es zu Inkonsistenzen kommt, wenn Sie die entsprechenden Dateisystemobjekte nicht löschen.


Bei dem bisher beschriebenen Vorgehen bleibt jedoch das Paketverzeichnis bestehen und existiert als "Dateisystem-Leiche" weiter. Daher ist es sinnvoll, die entsprechenden Dateisystemobjekte ebenfalls zu löschen. Der folgende Scriptcode löscht eine Paket aus der Datenbank und das zugehörige Paketverzeichnis inklusive aller Unterverzeichnisse:


$MyDSMShare = "\\CHISV01\DSM$"

$MySoftwarePackage = Get-EmdbSoftwarePackage "emdb:\rootDSE\Global Software Library\Application Library\MyEScriptPackage"

$MyWorkPath = "$MyDSMShare\Work\$($MySoftwarePackage.RepositoryID)\Projects\$($MySoftwarePackage.PackageId)"

$MySoftwarePackage.Delete($True)

Remove-Item -Path "filesystem::$MyWorkPath" -Recurse


Warnung: Beachten Sie genau, welche Verzeichnisse Sie gegebenenfalls löschen - insbesondere bei Paketen, für die mehrere Revisionen existieren!


Seit PSX 3.1 gibt es die Möglichkeit beim Löschen von Software Paket-Objekten über den SingleItemExpected-Schalter anzugeben, dass beim Aufruf kein oder genau nur ein Objekt erwartet wird. Würde das Kommando mehr als ein Objekt löschen, so wird eine Fehlermeldung erzeugt, die in Scripts abgefangen und behandelt werden kann.