Private/Start-CustomVMUpdate.ps1
# Will be called in VM function Global:Start-CustomVMUpdate { [CmdletBinding()] <# .SYNOPSIS ... .DESCRIPTION ... #> param( [Parameter(Mandatory = $true, Position = 1)] [string] $ObjectName, [Parameter(Mandatory = $false, Position = 2)] [switch] $IsScaleSet, [Parameter(Mandatory = $true, Position = 3)] [string] $ResourceGroupName, [Parameter(Mandatory = $true, Position = 4)] [string] $StorageAccountName ) process { Write-Host "Starting auto update..." # Uses managed identity to connect to Azure Account Connect-FromMachineToAzAccount Write-Host "Loading pending commands..." $storageAccount = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName $storageAccountContext = $storageAccount.Context # TODO: Switch from hardcoded-value to new entry in "Properties.ps1" $storageAccountTable = Get-AzStorageTable -Name 'Setup' -Context $storageAccountContext.Context $cloudTable = $storageAccountTable.CloudTable $rows = Get-AzTableRow -Table $cloudTable | Where-Object { ($_.ExecutedBy -notlike "*$env:computername*") -and (($_.ObjectName -eq 'NULL') -or ($_.ObjectName -eq $ObjectName)) } foreach ($row in $rows) { Write-Host "Handling Command: $($row.Command)" switch ($row.Command) { 'JoinDomain' { Write-Host "Loading credentials..." # Load Admin Credentials from KeyVault $adminUserName = (Get-AzKeyVaultSecret -VaultName "SetupValues" -Name 'DomainAdminUsername').SecretValueText $adminUserPass = (Get-AzKeyVaultSecret -VaultName "SetupValues" -Name 'DomainAdminPassword').SecretValueText $domainName = (Get-AzKeyVaultSecret -VaultName "SetupValues" -Name 'DomainName').SecretValueText $domainAdminCredentials = New-Object System.Management.Automation.PSCredential ($adminUserName, (ConvertTo-SecureString -String $adminUserPass -AsPlainText -Force)) if ($row.RestartNecessary -eq $true) { # Update Command Table, because machine will be restartet in a moment Set-StorageCommandExecuted -CommandRow $row -ExecutedByName $env:computername } Add-Computer -DomainName $domainName -Credential $domainAdminCredentials -Restart -Force | Out-Null } 'CreateInstances' { Write-Hoste "Loading Instance-data..." $storageAccountTableInstances = Get-AzStorageTable -Name 'Environments' -Context $storageAccountContext.Context $cloudTableInstances = $storageAccountTableInstances.CloudTable $rows = Get-AzTableRow -Table $cloudTableInstances } # Add "CreateInstances" # Add "UpdateInstanceConfiguration" # Add "CreateWebInstances" # Add "UpdateWebInstanceConfiguration" # Add "UpdateLicense" # Add "UpdateCertificate" # Add "UpdateWebCertificate" # Add "CreateDelegation" # Add "CreateSPN" default { Write-Host "Not implemented yet." } } if ($row.RestartNecessary -eq $true) { break } } } } |