Created
October 21, 2013 12:27
-
-
Save jhorsman/7083073 to your computer and use it in GitHub Desktop.
Add-AssemblyToGlobalAssemblyCache.ps1 from http://blog.goverco.com/2012/04/use-powershell-to-put-your-assemblies.html. Usage example to deploy a DLL file to the GAC: ".\Add-AssemblyToGlobalAssemblyCache.ps1 -AssemblyName D:\Tridion\bin\Extentions\Tridion.Extensions.ContentManager.FunctionSources.dll"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<# | |
.SYNOPSIS | |
Installing Assemblies to Global Assembly Cache (GAC) | |
.DESCRIPTION | |
This script is an alternative to the GACUTIL available in | |
the .NET Framework SDK. It will put the specified assembly | |
in the GAC. | |
.EXAMPLE | |
.\Add-AssemblyToGlobalAssemblyCache.ps1 -AssemblyName C:\Temp\MyWorkflow.dll | |
This command will install the file MyWorkflow.dll from the C:\Temp directory in the GAC. | |
.EXAMPLE | |
Dir C:\MyWorkflowAssemblies | % {$_.Fullname} | .\Add-AssemblyToGlobalAssemblyCache.ps1 | |
You can also pass the assembly filenames through the pipeline making it easy | |
to install several assemblies in one run. The command abobe will install | |
all assemblies from the directory C:\MyWorkflowAssemblies, run this command - | |
.PARAMETER AssemblyName | |
Full path of the assembly file | |
.PARAMETER PassThru | |
If set, script will pass the filename given through the pipeline | |
.NOTES | |
April 18, 2012 | Soren Granfeldt ([email protected]) | |
- initial version | |
.LINK | |
http://blog.goverco.com | |
#> | |
[CmdletBinding()] | |
PARAM | |
( | |
[Parameter(Mandatory=$true, ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)] | |
[ValidateNotNullOrEmpty()] | |
[string] $AssemblyName = "", | |
[switch]$PassThru | |
) | |
BEGIN | |
{ | |
$me = $MyInvocation.MyCommand -Replace '\.ps1$', '' | |
Write-Debug "BEGIN: $Me" | |
if ( $null -eq ([AppDomain]::CurrentDomain.GetAssemblies() |? { $_.FullName -eq "System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" }) ) { | |
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a") | Out-Null | |
} | |
$PublishObject = New-Object System.EnterpriseServices.Internal.Publish | |
} | |
PROCESS { | |
Write-Debug "PROCESS: $me" | |
foreach ($Assembly in $AssemblyName) | |
{ | |
if ( -not (Test-Path $Assembly -type Leaf) ) | |
{ | |
throw "The assembly '$Assembly' does not exist." | |
} | |
$LoadedAssembly = [System.Reflection.Assembly]::LoadFile($Assembly) | |
if ($LoadedAssembly.GetName().GetPublicKey().Length -eq 0) | |
{ | |
throw "The assembly '$Assembly' must be strongly signed." | |
} | |
Write-Verbose "Installing: $Assembly" | |
$PublishObject.GacInstall($Assembly) | |
if ($PassThru) { $_ } | |
} | |
} | |
END | |
{ | |
Write-Debug "END: $me" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment