Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
When you try to run Powershell commands on Windows Azure Cloud Service (PaaS) VM you may have seen exception as below:
PS D:\Users\avkash> Add-PSSnapin Microsoft.WindowsAzure.ServiceRuntime
Add-PSSnapin : Cannot add Windows PowerShell snap-in Microsoft.WindowsAzure.ServiceRuntime because it is already added.
Verify the name of the snap-in and try again.
At line:1 char:13
+ Add-PSSnapin <<<< Microsoft.WindowsAzure.ServiceRuntime
+ CategoryInfo : InvalidArgument: (Microsoft.WindowsAzure.ServiceRuntime:String) [Add-PSSnapin], PSArgume ntException
+ FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand
I have create a Powershell script which auto detect the Windows Azure SDK version runtime in the Azure VM and then fix this problem in registry and set the Role Busy as below:
[xml] $RoleModelXml = Get-Content "E:\RoleModel.xml"
$sdkVersion = $RoleModelXml.RoleModel.Version
Write-Output ("---------------------------------------")
Write-Output("Your SDK Version is: " + $sdkVersion)
Write-Output("---------------------------------------")
Write-Output("")
Write-Output("Now Setting SDK Version in Registry: " + $sdkVersion.substring(0,3))
Write-Output("---------------------------------------")
$finalSDKVersion = $sdkVersion.substring(0,3)
$fixedAssemblyName = "Microsoft.WindowsAzure.ServiceRuntime.Commands, Version=" + $finalSDKVersion + ".0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
$Registry_Key = “HKLM:\Software\Microsoft\PowerShell\1\PowerShellSnapIns\Microsoft.WindowsAzure.ServiceRuntime\"
Set-ItemProperty -path $Registry_Key -name Version -value $finalSDKVersion
Set-ItemProperty -path $Registry_Key -name PowerShellVersion -value 2.0
Set-ItemProperty -path $Registry_Key -name AssemblyName -value $fixedAssemblyName
#Validate the registry
Write-Output("*** --- Validating the registry change *** ----")
Get-ItemProperty -path $Registry_Key -name Version
Get-ItemProperty -path $Registry_Key -name PowerShellVersion
Get-ItemProperty -path $Registry_Key -name AssemblyName
$AzureSnapIn = "Microsoft.WindowsAzure.ServiceRuntime"
if ( (Get-PSSnapin -Name $AzureSnapIn -ErrorAction SilentlyContinue) -eq $null )
{
Add-PsSnapin $AzureSnapIn
}
else
{
$message = "PsSnapin " + $AzureSnapIn + " already loaded!!"
Write-Output($message);
}
#Settings the Role busy
Write-Output("*** --- Setting Role Busy *** ----")
Set-RoleInstanceStatus -busy