Import-Module Azure falla

18

Estoy tratando de trabajar con el módulo Windows Azure PowerShell en Windows 8.1. Descargué e instalé el módulo Azure y al principio puedo ejecutar y usar el "Windows Azure PowerShell", que es un PS que solo carga Azure. Cuando abro solo una ventana PS simple y hago Import-Module Azure, falla con:

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

Sospecho que tiene algo que ver con las versiones de PowerShell o las versiones de 64 \ 32 bits.

Alguien tiene alguna experiencia con esto?

itaysk
fuente

Respuestas:

19

Los archivos binarios del SDK de Windows Azure y los cmdlets de PowerShell correspondientes son todos de 32 bits, razón por la cual el acceso directo "Windows Azure Powershell" siempre inicia un shell de 32 bits.

Puede importar el módulo de Azure a una sesión de PowerShell existente haciendo referencia a la ruta del sistema de archivos al manifiesto del módulo:

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

[Actualización] En la última versión de Azure, use

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

Para acceder al módulo solo por su nombre, deberá incluir su ubicación en la PSModulePathvariable de entorno (aquí con detalles insoportables, para desarrolladores):

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

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

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

Y una expresión abreviada para tu PowerShell

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

Puede incluir lo anterior en su perfil de PowerShell

Mathias R. Jessen
fuente
2
Gracias, eso también funciona para PS de 64 bits. ¿Hay alguna manera de hacer que el acceso directo funcione también en PS de 64 bits?
itaysk
2
Para mí, el comando que tuve que ejecutar fue: Módulo de importación "C: \ Archivos de programa (x86) \ SDK de Microsoft \ Azure \ PowerShell \ ServiceManagement \ Azure \ Azure.psd1"
Kai G
7

Si acaba de instalar el SDK de Azure PowerShell, reinicie primero la computadora. Es necesario reiniciar después de la instalación; de lo contrario, se generará esta excepción.

Chris Pietschmann
fuente
1
Eso fue exactamente!
Luis Gouveia
1

En Windows 10, la ruta ha cambiado. Ver la versión correcta a continuación:

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

Para el módulo de modo Azure Resource Manager (2015/09/11), use lo siguiente:

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

También intente ejecutar el instalador como Administrador, haciendo clic derecho en el ejecutable del instalador y seleccionando Ejecutar como administrador. Una vez completado, reinicie. También puede ejecutar la importación como se indicó anteriormente, pero no debería necesitar hacerlo con los instaladores más nuevos.

Tommy Patterson
fuente
0

Dependiendo de la versión del SDK que haya instalado, puede tener una carpeta "Windows Azure" o simplemente "Azure" en la ruta.

Para mi configuración, uso esto:

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

Para AzureRM 4.2.1 (en el momento de esta respuesta). Su ruta de módulo es diferente en mi caso es

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

Lo estaba usando en una máquina x64, sistema operativo Windows 10.

Es posible que necesite políticas de ejecución, ya que PowerShell solicita confirmación antes de importar módulos. Aquí está el enlace para las petroleras de ejecución.

Jawand Singh
fuente
0

Tengo el problema exacto que aparece en la pregunta. Pero estoy usando Powershell Core. Mi síntoma fue ligeramente diferente (y muy confuso)

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.

Después de un par de daysvagar en la oscuridad, encontré este problema en github para Powershell Core: https://github.com/PowerShell/PowerShell/issues/4090 y enterrado profundamente fue un comentario de un usuario anónimo. A saber: @LaurentPrat how are you importing AzureRM on linux? O_O you are supposed to load azurerm.netcore. Si bien la discusión fue sobre Linux, la realización del momento de la bombilla fue suficiente. Hay nuevos módulos para azure powershell core.

Mi perfil de inicio de PS ahora presenta esta declaración

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