tisdag 7 juli 2015

Using PowerShell to Remove a DLL from the GAC on Windows Server 2008 R2 / Windows Server 2012

In my previous post (Using PowerShell to deploy DLLs to the GAC...) I showed a script on how to deploy a DLL to the GAC. In some cases we also want to remove DLL's from the GAC we do this we use the same assembly System.EnterpriseServices, as we used to deploy the DLL.

In the assembly  System.EnterpriseServices in the namespace System.EnterpriseServices.Internal  we have the class Publish. The Publish class contains a method named GacRemove which takes a string as an input parameter. This string is full path to the location where the original DLL is located. If you deleted the DLL you will have to copy it from the GAC to the original location and then execute GacRemove. Reference to MSDN

The following script is the absolute bare bone script needed to remove a DLL from the GAC. Remember to replace the <FULLPATH_TO_YOUR_ORIGINAL_DLL> with the actual literal path to the original DLL.
$AssemblyFilePath = "<FULLPATH_TO_YOUR_ORIGINAL_DLL>"
[System.Reflection.Assembly]::LoadWithPartialName("System.EnterpriseServices")
$publish = New-Object System.EnterpriseServices.Internal.Publish
$publish.GacRemove($AssemblyFilePath)
Write-Host “Assembly has been removed from the GAC”

Inga kommentarer:

Skicka en kommentar