Skip to content

Commit 832c67d

Browse files
authored
Merge pull request #115146 from bjompen/UpdatePWSH
Update PowerShell code to better follow good code standards.
2 parents 4d43b4e + 84135f0 commit 832c67d

File tree

1 file changed

+45
-56
lines changed

1 file changed

+45
-56
lines changed

articles/automation/learn/powershell-runbook-managed-identity.md

Lines changed: 45 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ Assign permissions to the managed identities to allow them to stop and start a v
3838
```powershell
3939
# Sign in to your Azure subscription
4040
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
41-
if(-not($sub))
42-
{
41+
if(-not ($sub)) {
4342
Connect-AzAccount
4443
}
4544
@@ -110,81 +109,71 @@ Create a runbook that will allow execution by either managed identity. The runbo
110109
111110
```powershell
112111
Param(
113-
[string]$resourceGroup,
114-
[string]$VMName,
115-
[string]$method,
116-
[string]$UAMI
112+
[string]$ResourceGroup,
113+
[string]$VMName,
114+
[string]$Method,
115+
[string]$UAMI
117116
)
118-
117+
119118
$automationAccount = "xAutomationAccount"
120119
121120
# Ensures you do not inherit an AzContext in your runbook
122-
Disable-AzContextAutosave -Scope Process | Out-Null
123-
121+
$null = Disable-AzContextAutosave -Scope Process
122+
124123
# Connect using a Managed Service Identity
125124
try {
126-
$AzureContext = (Connect-AzAccount -Identity).context
127-
}
128-
catch{
129-
Write-Output "There is no system-assigned user identity. Aborting.";
130-
exit
131-
}
132-
125+
$AzureConnection = (Connect-AzAccount -Identity).context
126+
}
127+
catch {
128+
Write-Output "There is no system-assigned user identity. Aborting."
129+
exit
130+
}
131+
133132
# set and store context
134-
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription `
135-
-DefaultProfile $AzureContext
133+
$AzureContext = Set-AzContext -SubscriptionName $AzureConnection.Subscription -DefaultProfile $AzureConnection
136134
137-
if ($method -eq "SA")
138-
{
139-
Write-Output "Using system-assigned managed identity"
140-
}
141-
elseif ($method -eq "UA")
142-
{
143-
Write-Output "Using user-assigned managed identity"
135+
if ($Method -eq "SA") {
136+
Write-Output "Using system-assigned managed identity"
137+
}
138+
elseif ($Method -eq "UA") {
139+
Write-Output "Using user-assigned managed identity"
144140
145-
# Connects using the Managed Service Identity of the named user-assigned managed identity
146-
$identity = Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup `
147-
-Name $UAMI -DefaultProfile $AzureContext
141+
# Connects using the Managed Service Identity of the named user-assigned managed identity
142+
$identity = Get-AzUserAssignedIdentity -ResourceGroupName $ResourceGroup -Name $UAMI -DefaultProfile $AzureContext
148143
149-
# validates assignment only, not perms
150-
if ((Get-AzAutomationAccount -ResourceGroupName $resourceGroup `
151-
-Name $automationAccount `
152-
-DefaultProfile $AzureContext).Identity.UserAssignedIdentities.Values.PrincipalId.Contains($identity.PrincipalId))
153-
{
154-
$AzureContext = (Connect-AzAccount -Identity -AccountId $identity.ClientId).context
144+
# validates assignment only, not perms
145+
$AzAutomationAccount = Get-AzAutomationAccount -ResourceGroupName $ResourceGroup -Name $automationAccount -DefaultProfile $AzureContext
146+
if ($AzAutomationAccount.Identity.UserAssignedIdentities.Values.PrincipalId.Contains($identity.PrincipalId)) {
147+
$AzureConnection = (Connect-AzAccount -Identity -AccountId $identity.ClientId).context
155148
156-
# set and store context
157-
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
158-
}
159-
else {
160-
Write-Output "Invalid or unassigned user-assigned managed identity"
161-
exit
162-
}
149+
# set and store context
150+
$AzureContext = Set-AzContext -SubscriptionName $AzureConnection.Subscription -DefaultProfile $AzureConnection
163151
}
164-
else {
165-
Write-Output "Invalid method. Choose UA or SA."
152+
else {
153+
Write-Output "Invalid or unassigned user-assigned managed identity"
166154
exit
167-
}
155+
}
156+
}
157+
else {
158+
Write-Output "Invalid method. Choose UA or SA."
159+
exit
160+
}
168161
169162
# Get current state of VM
170-
$status = (Get-AzVM -ResourceGroupName $resourceGroup -Name $VMName `
171-
-Status -DefaultProfile $AzureContext).Statuses[1].Code
163+
$status = (Get-AzVM -ResourceGroupName $ResourceGroup -Name $VMName -Status -DefaultProfile $AzureContext).Statuses[1].Code
172164
173165
Write-Output "`r`n Beginning VM status: $status `r`n"
174166
175167
# Start or stop VM based on current state
176-
if($status -eq "Powerstate/deallocated")
177-
{
178-
Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
179-
}
180-
elseif ($status -eq "Powerstate/running")
181-
{
182-
Stop-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext -Force
183-
}
168+
if ($status -eq "Powerstate/deallocated") {
169+
Start-AzVM -Name $VMName -ResourceGroupName $ResourceGroup -DefaultProfile $AzureContext
170+
}
171+
elseif ($status -eq "Powerstate/running") {
172+
Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroup -DefaultProfile $AzureContext -Force
173+
}
184174
185175
# Get new state of VM
186-
$status = (Get-AzVM -ResourceGroupName $resourceGroup -Name $VMName -Status `
187-
-DefaultProfile $AzureContext).Statuses[1].Code
176+
$status = (Get-AzVM -ResourceGroupName $ResourceGroup -Name $VMName -Status -DefaultProfile $AzureContext).Statuses[1].Code
188177
189178
Write-Output "`r`n Ending VM status: $status `r`n `r`n"
190179

0 commit comments

Comments
 (0)