Vertalingen: "English" |
Scripts uitvoeren op meerdere Azure VMs
Moet je snel een script uitvoeren op meerdere Azure VMs? Deze handleiding laat zien hoe je dit kunt doen met behulp van Azure RunCommand.
Voorvereisten
Voordat je begint, zorg ervoor dat je beschikt over:
- PowerShell Az-modules geïnstalleerd
- Actieve Azure-authenticatie
- De juiste machtigingen om de doel-VMs te benaderen en aan te passen
Praktijkvoorbeeld: Lokale Windows-accounts Aanmaken
In deze handleiding behandelen we een praktisch voorbeeld van het aanmaken van lokale Windows-accounts op meerdere Azure VMs. We verdelen de implementatie in twee hoofdcomponenten:
1. Script voor het Aanmaken van Lokale Accounts
Dit script wordt rechtstreeks op elke doel-VM uitgevoerd om het lokale gebruikersaccount aan te maken:
1$Password = ConvertTo-SecureString "<jouw wachtwoord hier of beter nog, gebruik een invoerparameter>" -AsPlainText -Force
2$UserParams = @{
3 Name = "<jouw gebruikersnaam hier>"
4 Password = $Password
5 FullName = "<Volledige naam>"
6 Description = "Lokaal gebruikersaccount aangemaakt via PowerShell"
7 PasswordNeverExpires = $true
8 UserMayNotChangePassword = $false
9}
10
11try {
12 New-LocalUser @UserParams
13 Write-Host "Gebruikersaccount 'inspark' succesvol aangemaakt!"
14 Add-LocalGroupMember -Group "Administrators" -Member "inspark"
15 Write-Host "Gebruiker 'inspark' toegevoegd aan Administrators groep"
16} catch {
17 Write-Error "Aanmaken gebruikersaccount mislukt: $_"
18}
19
20Get-LocalUser -Name $UserParams.Name | Select-Object Name, Enabled, PasswordExpires, LastLogon
2. Script voor VM-uitvoering
Dit script zorgt voor de uitvoering van ons account-aanmaakscript op meerdere VMs:
1# Filter VMs op basis van tags
2$vms = Get-AzVM | Where-Object {
3 $_.Tags -and
4 $_.Tags["Tag key"] -eq "Tag value"
5}
6
7# Voer script uit op elke VM
8foreach($vm in $vms) {
9 Write-Host "Lokale beheerder aanmaken op VM: $($vm.name)"
10 try {
11 Set-AzVMRunCommand `
12 -ResourceGroupName $vm.resourceGroupName `
13 -VMName $vm.name `
14 -Location $vm.location `
15 -RunCommandName "RunCommandName" `
16 –SourceScript $script
17 }
18 catch {
19 Write-Error "Uitvoeren script op VM $($vm.name) mislukt: $_"
20 }
21
22 # Controleer uitvoeringsstatus
23 Try {
24 $result = Get-AzVMRunCommand `
25 -ResourceGroupName $vm.resourceGroupName `
26 -VMName $vm.name `
27 -RunCommandName "RunCommandName" `
28 -Expand InstanceView
29 }
30 catch {
31 Write-Error "Ophalen script uitvoeringsstatus op VM $($vm.name) mislukt: $_"
32 }
33 Write-Host "Script uitvoeringsstatus op VM $($vm.name)"
34 $result.InstanceView
35}
Complete Implementatie
Hier is het complete script dat beide componenten combineert:
1# Definieer het script dat op VMs wordt uitgevoerd met here-string
2$script = @'
3$Password = ConvertTo-SecureString "<jouw wachtwoord hier of beter nog, gebruik een invoerparameter>" -AsPlainText -Force
4$UserParams = @{
5 Name = "<jouw gebruikersnaam hier>"
6 Password = $Password
7 FullName = "<Volledige naam>"
8 Description = "Lokaal gebruikersaccount aangemaakt via PowerShell"
9 PasswordNeverExpires = $true
10 UserMayNotChangePassword = $false
11}
12
13try {
14 New-LocalUser @UserParams
15 Write-Host "Gebruikersaccount 'inspark' succesvol aangemaakt!"
16 Add-LocalGroupMember -Group "Administrators" -Member "inspark"
17 Write-Host "Gebruiker 'inspark' toegevoegd aan Administrators groep"
18} catch {
19 Write-Error "Aanmaken gebruikersaccount mislukt: $_"
20}
21
22Get-LocalUser -Name $UserParams.Name | Select-Object Name, Enabled, PasswordExpires, LastLogon
23'@
24
25# Laad en filter VMs
26$vms = Get-AzVM | Where-Object {
27 $_.Tags -and
28 $_.Tags["Tag key"] -eq "Tag value"
29}
30
31# Uitvoeren op elke VM
32foreach($vm in $vms) {
33 Write-Host "Lokale beheerder aanmaken op VM: $($vm.name)"
34 try {
35 Set-AzVMRunCommand `
36 -ResourceGroupName $vm.resourceGroupName `
37 -VMName $vm.name `
38 -Location $vm.location `
39 -RunCommandName "RunCommandName" `
40 –SourceScript $script
41 }
42 catch {
43 Write-Error "Uitvoeren script op VM $($vm.name) mislukt: $_"
44 }
45 Try {
46 $result = Get-AzVMRunCommand `
47 -ResourceGroupName $vm.resourceGroupName `
48 -VMName $vm.name `
49 -RunCommandName "RunCommandName" `
50 -Expand InstanceView
51 }
52 catch {
53 Write-Error "Ophalen script uitvoeringsstatus op VM $($vm.name) mislukt: $_"
54 }
55 Write-Host "Script uitvoeringsstatus op VM $($vm.name)"
56 $result.InstanceView
57}
Belangrijke Functies
- Tag-gebaseerd Filteren: Specifieke VMs targeten met Azure-tags
- Statusverificatie: Ingebouwde verificatie van scriptuitvoeringsstatus
- Veilige Accountcreatie: Correct beveiligde lokale accountcreatie met juiste groepslidmaatschap
Beveiligingsoverwegingen
- Gebruik altijd veilige wachtwoordbeheerpraktijken
- Overweeg Azure Key Vault password manager voor opslag van inloggegevens
- Implementeer correcte toegangscontroles voor het automatiseringsaccount
- Voer regelmatig audits en reviews uit van lokale beheerdersaccounts