Import-Module Azure schlägt fehl

18

Ich versuche, mit dem Windows Azure PowerShell-Modul unter Windows 8.1 zu arbeiten. Ich habe das Azure-Modul heruntergeladen und installiert und beim Start kann ich die "Windows Azure PowerShell" ausführen und verwenden, eine PS, die nur Azure lädt. Wenn ich nur ein einfaches PS-Fenster öffne und Import-Module Azure ausführe, schlägt dies fehl mit:

import-module : The specified module 'Azure' was not loaded because no valid module file was found in any module directory.

Ich vermute, dass es etwas mit Powershell-Versionen oder 64/32-Bit-Versionen zu tun hat.

Hat jemand irgendwelche Erfahrungen damit?

itaysk
quelle

Antworten:

19

Die Windows Azure SDK-Binärdateien und die zugehörigen PowerShell-Cmdlets sind alle 32-Bit-Dateien. Aus diesem Grund wird mit der Verknüpfung "Windows Azure Powershell" immer eine 32-Bit-Shell gestartet.

Sie können das Azure-Modul in eine vorhandene PowerShell-Sitzung importieren, indem Sie den Dateisystempfad auf das Modulmanifest verweisen:

Import-Module "C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure\Azure.psd1"

[Update] Verwenden Sie in der neuesten Version von Azure

Import-Module "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Azure.psd1"

Um nur über den Namen auf das Modul zuzugreifen, müssen Sie dessen Position in die PSModulePathUmgebungsvariable aufnehmen (hier im Detail für Entwickler):

$oldPSModulePath = [Environment]::GetEnvironmentVariable("PSModulePath")

$azureModulePath = "C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\"

$newPSModulePath = $oldPSModulePath,$azureModulePath -join ";" 
[Environment]::SetEnvironmentVariable("PSModulePath",$newPSModulePath)

Und eine Abkürzung für Ihre Powershell

$env:PSModulePath += ";C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\"
Import-Module Azure # <-- Now you can do this!

Sie können das Obige in Ihr PowerShell-Profil aufnehmen

Mathias R. Jessen
quelle
2
Danke, das funktioniert auch für 64 Bit PS. Gibt es eine Möglichkeit, die Verknüpfung auch in 64-Bit-PS zum Laufen zu bringen?
Itaysk
2
Für mich war der Befehl, den ich ausführen musste: Import-Modul "C: \ Programme (x86) \ Microsoft SDKs \ Azure \ PowerShell \ ServiceManagement \ Azure \ Azure.psd1"
Kai G
7

Wenn Sie gerade das Azure PowerShell SDK installiert haben, starten Sie zuerst den Computer neu. Nach der Installation ist ein Neustart erforderlich, andernfalls wird diese Ausnahme ausgelöst.

Chris Pietschmann
quelle
1
Das war genau das !!!
Luis Gouveia
1

In Windows 10 hat sich der Pfad geändert. Siehe korrekte Version unten:

$oldPSModulePath = [Environment]::GetEnvironmentVariable("PSModulePath")
$azureModulePath = "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement"
$newPSModulePath = $oldPSModulePath,$azureModulePath -join ";" 
Rahim
quelle
1

Verwenden Sie für das Azure Resource Manager-Modusmodul (11.09.2015) Folgendes:

import-module "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager\AzureResourceManager\AzureResourceManager.psd1"
Jonathan Gao
quelle
0

Versuchen Sie auch, das Installationsprogramm als Administrator auszuführen, indem Sie mit der rechten Maustaste auf die ausführbare Datei des Installationsprogramms klicken und Als Administrator ausführen auswählen. Sobald der Vorgang abgeschlossen ist, starten Sie ihn neu. Sie können den Import auch wie oben beschrieben ausführen, dies sollte jedoch bei den neueren Installationsprogrammen nicht erforderlich sein.

Tommy Patterson
quelle
0

Abhängig von der installierten SDK-Version befindet sich möglicherweise ein Ordner "Windows Azure" oder nur "Azure" im Pfad.

Für mein Setup verwende ich Folgendes:

C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure
Ozkary
quelle
0

Für AzureRM 4.2.1 (zum Zeitpunkt dieser Antwort). Sein Modulpfad ist in meinem Fall anders

$env:PSModulePath += ";C:\Program Files\WindowsPowerShell\Modules\"
Import-module AzureRM

Ich habe es auf einem x64-Computer mit Windows 10-Betriebssystem verwendet.

Möglicherweise benötigen Sie Ausführungsrichtlinien, da Powershell eine Bestätigung verlangt, bevor Module importiert werden. Hier finden Sie den Link für Ausführungsrichtlinien.

Jawand Singh
quelle
0

Ich habe das genaue Problem in der Frage aufgeführt. Aber ich benutze Powershell Core. Mein Symptom war etwas anders (und sehr verwirrend)

Import-Module : Could not load file or assembly 'System.Windows.Forms,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system
cannot find the file specified.

Nachdem daysich ein paar Mal im Dunkeln gewandert war, fand ich dieses Problem bei Github für Powershell Core: https://github.com/PowerShell/PowerShell/issues/4090 . Nämlich: @LaurentPrat how are you importing AzureRM on linux? O_O you are supposed to load azurerm.netcore. Während sich die Diskussion um Linux drehte, genügte die Realisierung des Glühbirnenmoments. Es gibt neue Module für den Azure PowerShell Core.

Mein PS-Startprofil enthält jetzt diese Anweisung

if ($PSVersionTable.PSEdition -ieq "core") { 
    Import-Module AzureRM.Netcore 
}
Keine Rückerstattung Keine Rückgabe
quelle