Powershell doesn't install AzurePowerShell

I found a script on the internet that installs WindowsAzurePowerShell, but it doesn't work:

    [reflection.assembly]::LoadWithPartialName("Microsoft.Web.PlatformInstaller") | Out-Null

    $ProductManager = New-Object Microsoft.Web.PlatformInstaller.ProductManager
    $ProductManager.Load()
    $product = $ProductManager.Products | Where { $_.ProductId -eq "WindowsAzurePowerShell" }

    $InstallManager = New-Object Microsoft.Web.PlatformInstaller.InstallManager

    $Language = $ProductManager.GetLanguage("en")
    $installertouse = $product.GetInstaller($Language)

    $installer = New-Object 'System.Collections.Generic.List[Microsoft.Web.PlatformInstaller.Installer]'
    $installer.Add($installertouse)
    $InstallManager.Load($installer)

    $failureReason=$null
    foreach ($installerContext in $InstallManager.InstallerContexts) {
        $InstallManager.DownloadInstallerFile($installerContext, [ref]$failureReason)
    }
    $InstallManager.StartInstallation()

      

I see an exception:

Throwing "DownloadInstallerFile" exception with argument "2": "This InstallerContext method requires a non-Null InstallerFile." In C: \ Users \ test.ps1: 18 char: 5 + $ InstallManager.DownloadInstallerFile ($ installerContext, [ref] $ failReason ... + ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: InvalidOperationException

So. How is it fixed?

0


source to share


1 answer


In the example below, I'm not going to install this package the way you are trying to, but instead download the WebPi CLI, extract the zip and run it at an extended prompt, then return an exit code. I think this will do the job and can be reproduced on all boxes that cannot have WebPI installed as you can put the file on a share and run it on many computers.



$SourcePath = "http://www.iis.net/community/files/webpi/webpicmd_x86.zip"
$DestinationPath = "c:\Temp\webpicmd_x86.zip"
$ExtractionPath = "c:\Temp\WebPICmd"
$CWebPiCmdLineTool = "$ExtractionPath\WebpiCmdLine.exe"
Import-Module BitsTransfer

Start-BitsTransfer -Source $SourcePath -Destination $DestinationPath

New-Item -Path C:\Temp -Name WebPICmd -ItemType directory | Out-Null

$shell = new-object -com shell.application
$zip = $shell.NameSpace($DestinationPath)
foreach($item in $zip.items())
{
    $shell.Namespace($ExtractionPath).copyhere($item)
}

$InstallWebPiPackages = Start-Process -FilePath $CWebPiCmdLineTool -ArgumentList "/Products:WindowsAzurePowerShell" -Verb "RunAs" -Wait -PassThru
$InstallWebPiPackages.ExitCode

      

+1


source







All Articles