PatchFromGcs.ps1
# Copyright 2015-2016 Google Inc. All Rights Reserved. # Licensed under the Apache License Version 2.0. # # Updates Cloud Tools for PowerShell module to the latest found in # Google Cloud Storage bucket g-cloudsharp-unsignedbinaries. # Let a user manually select a Cloud SDK install path param($installPath) $installPath = $installPath -or $args[0] # Find the Google Cloud SDK install path from the registry. if (-not $installPath) { $hklmPath = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Google Cloud SDK" $hkcuPath = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Google Cloud SDK" if (Test-Path $hklmPath) { $installPath = Get-ItemPropertyValue $hklmPath InstallLocation } elseif (Test-Path $hkcuPath) { $installPath = Get-ItemPropertyValue $hkcuPath InstallLocation } else { Write-Error "Can not find Cloud SDK from the registry." return } } $installPath = $installPath -replace '"' # Registry values had quotes. This removes them. Push-Location (Join-Path $installPath "google-cloud-sdk\platform\PowerShell") $googlePowerShellPath = Resolve-Path "GoogleCloud" if (-not (Test-Path $googlePowerShellPath)) { Write-Error "Can not find Cloud Tools for PowerShell. '$googlePowerShellPath' does not exist." return } $pathToOldCmdlets = "GoogleCloudPowerShell-unpatched-backup" if (Test-Path $pathToOldCmdlets) { Remove-Item $pathToOldCmdlets -Recurse } Move-Item $googlePowerShellPath $pathToOldCmdlets Import-Module "$pathToOldCmdlets/GoogleCloud.psd1" $bucket = Get-GcsBucket g-cloudsharp-unsignedbinaries # Find objects in the powershell directory, and select one most recently created. $zipObject = Find-GcsObject $bucket -Prefix powershell | Sort TimeCreated -Descending | Select -First 1 $zipFileName = Split-Path $zipObject.Name -Leaf Write-Verbose "Saving new file to $zipFileName" Read-GcsObject $bucket $zipObject.Name -OutFile $zipFileName -Force $zipPath = Resolve-Path $zipFileName Add-Type -AssemblyName System.IO.Compression.FileSystem [System.IO.Compression.ZipFile]::ExtractToDirectory($zipPath, "$googlePowerShellPath\..") Pop-Location |