Я пытаюсь работать с модулем 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
}