Check the version of PowerShell Installed

pwsh -ver

Install Azure CmdLet

Install-Module -Name Az -Scope CurrentUser -Repository PSGallery

Change Execution Policy (if restricted)

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Update a the Azure Powershell Module

Update-Module -Name Az

Connect PowerShell to Azure Subscription

Connect-AzAccount
Get-AzSubscription
Set-AzContext -Subscription '00000000-0000-0000-0000-000000000000'

Enumerate Resources and Groups

Get-AzResourceGroup
Get-AzResourceGroup | Format-Table

Get-AzResource
Get-AzResource | Format-Table
Get-AzResource -ResourceGroupName <name>

Check for untagged resources

Get-AzResource | ? Tags -eq $null | select Name, ResourceType

Create a Resource Group

New-AzResourceGroup -Name <name> -Location <location>

VM Commands

# create
New-AzVm
       -ResourceGroupName <resource group name>
       -Name <machine name>
       -Credential <credentials object>
       -Location <location>
       -Image <image name>

# status of all VMs
Get-AzVM -Status

# get VM object into a variable
$vm = (Get-AzVM -Name <vm name> -ResourceGroupName <rg name>)

# output the $vm properties
$vm
$vm.HardwareProfile
$vm.StorageProfile.OsDisk

# get the public IP of a VM
Get-AzPublicIpAddress -ResourceGroupName <rg name> -Name <vm name>

Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
Start-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
Restart-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
Update-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

Get Credential

$adminCredential = Get-Credential

Place the Region in a variable

$loc = "East US"
New-AzResourceGroup -Name <rg name> -Location $loc

PowerShell Loops

For ($i = 1; $i -lt 3; $i++)
{
    $i
}