| | 0

Import-Module AzureRM oder PackageManagement schlägt als Benutzer fehl #PowerShell, #PowerShellGet, #PackageManagement

Die Nutzung von Azure Key Vault ist aktuell nur mit PowerShell möglich. Voraussetzung ist das PowerShell Modul AzureRM. Dieses kann mit dem PowerShell Package Manager aus der PowerShell Gallery installiert werden (https://azure.microsoft.com/en-us/documentation/articles/powershell-install-configure). Mit meinem lokalen Admin Account ist dies problemlos möglich – jedoch nicht, mit meinem normalen Benutzer Account.

Als Benutzer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PS H:\> Import-Module PackageManagement
Import-Module : Das angegebene Modul "PackageManagement" wurde nicht geladen, da in keinem Modulverzeichnis eine gültige Moduldatei gefunden wurde.
In Zeile:1 Zeichen:1
+ Import-Module PackageManagement
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (PackageManagement:String) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand
PS H:\>

Als Admin:

1
2
3
PS H:\> Import-Module PackageManagement
PS H:\>

Der Grund:

Meinen Benutzer fehlt der Pfad zu den PowerShell Modulen in “C:\Program Files\WindowsPowerShell\Modules”

1
2
3
PS H:\> $env:PSModulePath
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\PowerShell\Modules\;C:\Program Files\Microsoft System Center 2012 R2\Operations Manager\Powershell\;C:\Program Files\Microsoft Azure Recovery Services Agent\bin\Modules\;C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement

In meinem Fall wird für meinen Benutzer Account die systemweite Variable PSModulePath (diese enthält den Pfad zu “C:\Program Files\WindowsPowerShell\Modules”) durch eine benutzerspezifische Variable überschrieben. Mein Admin Account besitzt keine benutzerspezifische Variable für PSModulePath und kann daher die Module laden.

Lösung:

Hinzufügen des Pfads für die aktuelle PowerShell Sitzung im Benutzerkontext mit:

1
$env:PSModulePath = $env:PSModulePath + "; C:\Program Files\WindowsPowerShell\Modules"

Entfernen der benutzerspezifischen Variable für PSModulePath (Achtung: ggf. gewollte Anpassungen gehen verloren):

1
[Environment]::SetEnvironmentVariable("PSModulePath", "", "User")

Anschließend Neustart der PowerShell Session