Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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