[powershell] Skript um Snap-Ins zu laden

Gepostet am: May 13, 2014 9:32:37 AM

Load Snapin

$myprogram = "SharePoint" $myversion = 2013#Funktion zum Laden des Snap-Ins function LoadSnapin([string]$SnapInName) {     add-pssnapin $SnapInName     write-host "Loading $SnapInName in session" -ForegroundColor DarkRed -BackgroundColor White }  #Funktion zum Ermitteln der benötigten Snapins für ein entsprechendes Programm #kann erweitert werden function GetSnapin([string]$program, [int]$Version) {     if ($program -eq "SQL") {         if ($Version -eq 2012) {             return,"SqlServerProviderSnapin110"         }          elseif ($Version -eq 2010) {             return,"SqlServerProviderSnapin100"         }     } elseif ($program -eq "SharePoint") {             return,"Microsoft.SharePoint.PowerShell"     } } #Funktion zum Ermitteln der für das SnapIn benötigten DLLs #kann erweitert werden function GetSnapinDLL([string]$program, [int]$Version) {     if ($program -eq "SQL") {             return @("Microsoft.SqlServer.Management.PSSnapins.dll","Microsoft.SqlServer.Management.PSProvider.dll")      } elseif ($program -eq "SharePoint") {             return @("Microsoft.SharePoint.PowerShell.dll")     } }   #Header Write-host "Snapin für $myprogram $myversion"#Ermitteln, welches Snapin benötigt wird $mySnapIn = GetSnapin -program $myprogram -Version $myversion Write-Host "benötigtes SnapIn: $mySnapIn"#Lade das Snapin  if (!(Get-PSSnapin | ?{$_.name -eq $mySnapIn})) {     if(Get-PSSnapin -registered | ?{$_.name -eq $mySnapIn})     {         LoadSnapin($mySnapIn)     }     else     {         write-host "$mySnapIn is not registered with the system." -Backgroundcolor Red –Foregroundcolor White         write-host "Registering SnapIn"         $framework=$([System.Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory())         Set-Alias installutil "$($framework)installutil.exe"         #Ermitteln der benötigten DLLs         $myDLLs = GetSnapinDLL -program $myprogram -Version $myversion         foreach($myDLL in $myDLLs) {             Get-ChildItem -Path "C:\" -Filter $myDLL -Recurse | % {                 $myDLLPath = $_.FullName                 Write-Host "Pfad der DLL: $myDLLPath" installutil $myDLLPath             }          }         LoadSnapin($mySnapIn)     } } else {   write-host "$mySnapIn is already loaded" -ForegroundColor DarkGreen -BackgroundColor White }