Importowanie modułu Azure kończy się niepowodzeniem

18

Próbuję pracować z modułem Windows Azure PowerShell w systemie Windows 8.1. Pobrałem i zainstalowałem moduł Azure i na początku mogę uruchomić i korzystać z „Windows Azure PowerShell”, czyli PS, który właśnie ładuje Azure. Kiedy otwieram zwykłe okno PS i wykonuję Import-Module Azure, kończy się to niepowodzeniem:

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

Podejrzewam, że ma to coś wspólnego z wersjami PowerShell lub wersjami 64-bitowymi.

Czy ktoś ma z tym jakieś doświadczenie?

Itaysk
źródło

Odpowiedzi:

19

Pliki binarne zestawu Windows Azure SDK i odnoszące się do poleceń cmdlet programu PowerShell są 32-bitowe, dlatego skrót „Windows Azure Powershell” zawsze uruchamia 32-bitową powłokę.

Możesz zaimportować moduł Azure do istniejącej sesji PowerShell, odwołując się do ścieżki systemu plików do manifestu modułu:

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

[Aktualizacja] Na najnowszej platformie Azure użyj

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

Aby uzyskać dostęp do modułu tylko z nazwy, musisz podać jego lokalizację w PSModulePathzmiennej środowiskowej (tutaj z niesamowitymi szczegółami, dla programistów):

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

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

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

I skrótowe określenie twojej skorupy PowerShell

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

Możesz uwzględnić powyższe w swoim profilu PowerShell

Mathias R. Jessen
źródło
2
Dzięki, działa to również na 64-bitowy PS. Czy istnieje sposób, aby skrót działał również w 64-bitowym PS?
itaysk
2
Dla mnie polecenie, które musiałem uruchomić to: Import-Module "C: \ Program Files (x86) \ Microsoft SDKs \ Azure \ PowerShell \ ServiceManagement \ Azure \ Azure.psd1"
Kai G
7

Jeśli właśnie zainstalowano zestaw Azure PowerShell SDK, najpierw uruchom ponownie komputer. Po instalacji wymagane jest ponowne uruchomienie, w przeciwnym razie zostanie zgłoszony wyjątek.

Chris Pietschmann
źródło
1
To było dokładnie to !!!
Luis Gouveia,
1

W systemie Windows 10 ścieżka uległa zmianie. Zobacz poprawną wersję poniżej:

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

W przypadku modułu trybu usługi Azure Resource Manager (2015/09/11) użyj następujących opcji:

import-module "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager\AzureResourceManager\AzureResourceManager.psd1"
Jonathan Gao
źródło
0

Spróbuj także uruchomić instalatora jako Administrator, klikając prawym przyciskiem myszy plik wykonywalny instalatora i wybierając opcję Uruchom jako administrator. Po zakończeniu uruchom ponownie. Możesz również uruchomić import, jak podano powyżej, ale nie powinieneś tego robić w nowszych instalatorach.

Tommy Patterson
źródło
0

W zależności od zainstalowanej wersji zestawu SDK na ścieżce może znajdować się folder „Windows Azure” lub po prostu „Azure”.

Do mojej konfiguracji używam tego:

C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure
ozkary
źródło
0

Dla AzureRM 4.2.1 (w momencie udzielenia odpowiedzi). Jego ścieżka modułu jest inna w moim przypadku

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

Używałem go na komputerze x64 z systemem operacyjnym Windows 10.

być może będziesz potrzebować zasad wykonywania, ponieważ PowerShell prosi o potwierdzenie przed zaimportowaniem modułów tutaj jest link do olejków wykonawczych.

Jawand Singh
źródło
0

Mam dokładny problem wymieniony w pytaniu. Ale używam Powershell Core. Mój objaw był nieco inny (i bardzo mylący)

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.

Po kilku dayswędrówkach w ciemności znalazłem ten problem na github dla Powershell Core: https://github.com/PowerShell/PowerShell/issues/4090 i głęboko w nim był komentarz anonimowego użytkownika. Mianowicie: @LaurentPrat how are you importing AzureRM on linux? O_O you are supposed to load azurerm.netcore. Podczas gdy dyskusja dotyczyła Linuksa, realizacja momentu żarówki była wystarczająca. Istnieją nowe moduły dla lazurowego rdzenia PowerShell.

Mój profil startowy PS zawiera teraz to oświadczenie

if ($PSVersionTable.PSEdition -ieq "core") { 
    Import-Module AzureRM.Netcore 
}
Bez zwrotów Bez zwrotów
źródło