Назад | Перейти на главную страницу

Ошибка импорта-модуля Azure

Я пытаюсь работать с модулем Windows Azure PowerShell в Windows 8.1. Я загрузил и установил модуль Azure, и вначале я могу запустить и использовать «Windows Azure PowerShell», который представляет собой PS, который просто загружает Azure. Когда я открываю простое окно PS и выполняю Import-Module Azure, происходит сбой:

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

Я подозреваю, что это как-то связано с версиями PowerShell или 64 \ 32-битными версиями.

У кого-нибудь есть опыт в этом?

Все двоичные файлы Windows Azure SDK и соответствующие командлеты PowerShell являются 32-разрядными, поэтому ярлык «Windows Azure Powershell» всегда запускает 32-разрядную оболочку.

Вы можете импортировать модуль Azure в существующий сеанс PowerShell, указав путь файловой системы к манифесту модуля:

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

[Обновление] В последней версии Azure используйте

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

Чтобы получить доступ к модулю только по имени, вам нужно указать его местоположение в PSModulePath переменная окружения (здесь очень подробно, для разработчиков):

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

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

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

И сокращенное выражение для вашего PowerShell

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

Вы можете включить это в свой профиль PowerShell.

Если вы только что установили пакет SDK для Azure PowerShell, сначала перезагрузите компьютер. После установки требуется перезагрузка, в противном случае будет выдано это исключение.

В Windows 10 путь изменился. См. Правильную версию ниже:

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

Для модуля режима Azure Resource Manager (2015/09/11) используйте следующее:

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

Также попробуйте запустить установщик от имени администратора, щелкнув правой кнопкой мыши исполняемый файл установщика и выбрав «Запуск от имени администратора». После завершения перезагрузитесь. Вы также можете запустить импорт, как указано выше, но вам не нужно делать это с более новыми установщиками.

В зависимости от версии SDK, которую вы установили, на пути может быть папка «Windows Azure» или просто «Azure».

Для моей настройки я использую это:

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

Для AzureRM 4.2.1 (на момент ответа). Его путь к модулю отличается, в моем случае это

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

Я использовал его на машине x64, ОС Windows 10.

вам могут потребоваться политики выполнения, так как powershell запрашивает подтверждение перед импортом модулей, вот ссылка на сайт для исполнения нефтяных полисов.

У меня точная проблема, указанная в вопросе. Но я использую Powershell Core. Мой симптом был немного другим (и очень запутанным)

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.

Через пару days блуждания в темноте я нашел эту проблему на github для Powershell Core: https://github.com/PowerShell/PowerShell/issues/4090 и глубоко в нем был закопан комментарий анонимного пользователя. А именно: @LaurentPrat how are you importing AzureRM on linux? O_O you are supposed to load azurerm.netcore. Пока речь шла о Linux, реализации момента лампочки хватило. Появились новые модули для ядра Azure PowerShell.

В моем профиле запуска PS теперь есть это заявление

if ($PSVersionTable.PSEdition -ieq "core") { 
    Import-Module AzureRM.Netcore 
}