导入模块Azure失败


18

我正在尝试使用Windows 8.1上的Windows Azure PowerShell模块。我已经下载并安装了Azure模块,并且一开始就可以运行和使用“ Windows Azure PowerShell”,这是一个仅加载Azure的PS。当我仅打开一个普通的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位版本有关。

有人对此有经验吗?

Answers:


19

Windows Azure SDK二进制文件和相关的PowerShell cmdlet都是32位的,这就是为什么“ Windows Azure Powershell”快捷方式始终启动32位Shell的原因。

您可以通过引用模块清单的文件系统路径将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配置文件中包含以上内容


2
谢谢,这也适用于64位PS。有没有办法使快捷方式也可以在64位PS中工作?
itaysk 2014年

2
对于我来说,我必须运行的命令是:导入模块“ C:\ Program Files(x86)\ Microsoft SDKs \ Azure \ PowerShell \ ServiceManagement \ Azure \ Azure.psd1”
Kai G


1

在Windows 10中,路径已更改。请参阅下面的正确版本:

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

1

对于Azure资源管理器模式模块(2015/09/11),请使用以下命令:

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

0

也可以尝试通过以管理员身份运行安装程序,方法是右键单击安装程序可执行文件,然后选择以管理员身份运行。完成后,重新启动。您也可以如上所述运行导入,但是您不需要使用较新的安装程序进行导入。


0

根据所安装的SDK版本,路径上可能会有“ Windows Azure”文件夹或只有“ Azure”文件夹。

对于我的设置,我使用以下命令:

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

0

对于AzureRM 4.2.1(在回答此问题时)。在我的情况下,它的模块路径是不同的

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

我在x64机器,Windows 10 OS上使用它。

您可能需要执行策略,因为powershell要求确认,然后才能导入模块,这里是执行过程的链接


0

我有问题中列出的确切问题。但是我正在使用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 
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.