Naming Conventions#
Prefix:
Azure
: Older prefix for Azure PowerShell cmdlets.Rm
: Resource Manager (older prefix).Az
: Newer prefix for Azure PowerShell cmdlets.
Actions:
Get-
: Returns an object. e.g.Get-AzVM
Retrieves details of a virtual machine.Set-
: Updates the property of an object. e.g.Set-AzVMSize
Changes the size of a virtual machine.Update-
: Updates a resource with the object. e.g.Update-AzVM
Updates a virtual machine with new configuration settings.New-
: Creates a resource. e.g.New-AzVM
Creates a new virtual machine.
Azure AD#
Add AD User#
New-AzureADUser
$userPrincipalName = "newuser@yourtenant.onmicrosoft.com"
$displayName = "New User"
$passwordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$passwordProfile.Password = "P@ssw0rd1234"
New-AzureADUser -DisplayName $displayName -PasswordProfile $passwordProfile -UserPrincipalName $userPrincipalName -AccountEnabled $true -MailNickname "newuser"
New-MgUser
$userPrincipalName = "newuser@yourtenant.onmicrosoft.com"
$displayName = "New User"
$password = "P@ssw0rd1234"
New-MgUser -UserPrincipalName $userPrincipalName -DisplayName $displayName -PasswordProfile @{ Password = $password } -MailNickname "newuser" -AccountEnabled $true
Invite AD Guest User#
New-AzureADMSInvitation
$invitedUserEmailAddress = "guestuser@example.com"
$inviteRedirectUrl = "https://myapplication.com/welcome"
New-AzureADMSInvitation -InvitedUserEmailAddress $invitedUserEmailAddress -InviteRedirectUrl $inviteRedirectUrl -SendInvitationMessage $true
New-MgInvitation
$invitedUserEmailAddress = "guestuser@example.com"
$inviteRedirectUrl = "https://myapplication.com/welcome"
New-MgInvitation -InvitedUserEmailAddress $invitedUserEmailAddress -InviteRedirectUrl $inviteRedirectUrl -SendInvitationMessage $true
Get Role Definition#
Get-AzRoleDefinition
: Get Azure role definition.
AD Sync#
Start-ADSyncSyncCycle -PolicyType Initial
: Full sync of AD Connect (slow).Start-ADSyncSyncCycle -PolicyType Delta
: Delta sync of AD Connect (quick).
VM#
Create VM#
New-AzureRmVM
New-AzVM
New-AzureVM
Upload Virtual Disk to Storage Account#
Add-AzVhd -ResourceGroupName "ResourceGroupName" -Destination "https://storageaccount.blob.core.windows.net/containername/diskname.vhd" -LocalFilePath "C:\Path\To\My\Local.vhd"
Create VM from VHD#
- Create Image from VHD.
- Create VM with VM Config.
Commands:
New-AzImageConfig
Set-AzImageOsDisk
Add-AzImageDataDisk
New-AzImage
New-AzureVMConfig
New-AzureVM
$resourceGroupName = "MyResourceGroup"
$location = "EastUS"
$imageName = "MyCustomImage"
$vmName = "MyNewVM"
$vmSize = "Standard_DS1_v2"
$osDiskUri = "https://mystorageaccount.blob.core.windows.net/vhds/myosdisk.vhd"
$dataDiskUri = "https://mystorageaccount.blob.core.windows.net/vhds/mydatadisk.vhd"
$storageAccount = "mystorageaccount"
$containerName = "vhds"
$osDiskName = "$vmName-osdisk.vhd"
$imageConfig = New-AzImageConfig -Location $location
$imageConfig = Set-AzImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -BlobUri $osDiskUri
$imageConfig = Add-AzImageDataDisk -Image $imageConfig -Lun 0 -BlobUri $dataDiskUri
$image = New-AzImage -ResourceGroupName $resourceGroupName -ImageName $imageName -Image $imageConfig
$vmConfig = New-AzureVMConfig -VMName $vmName -VMSize $vmSize
$vmConfig = Set-AzVMOSDisk -VM $vmConfig -Name $osDiskName -CreateOption FromImage -SourceImageUri $image.StorageProfile.OsDisk.Image.Uri -StorageAccountName $storageAccount -ContainerName $containerName
New-AzVM -ResourceGroupName $resourceGroupName -Location $location -VM $vmConfig
Update VM#
- Get the VM object.
- Update the config (IP/subnet).
- Call Update command to apply changes.
Commands:
Get-AzureVM
Set-AzureStaticVNetIP
Set-AzureSubnet
Update-AzureVM
$resourceGroupName = "MyResourceGroup"
$vmName = "MyExistingVM"
$newStaticIP = "10.0.0.10"
$newSubnetName = "MyNewSubnet"
$vm = Get-AzureVM -ResourceGroupName $resourceGroupName -Name $vmName
$vm = Set-AzureStaticVNetIP -VM $vm -IPAddress $newStaticIP
$vm = Set-AzureSubnet -VM $vm -SubnetName $newSubnetName
Update-AzureVM -ResourceGroupName $resourceGroupName -VM $vm
AKS#
Set AKS Config#
Set-AzAksCluster
Build and Push Image#
az acr build --registry <registry-name> --image <image-name>:<tag> <local-context-path>
Create AKS#
az aks create
Update Node Pool Config#
az aks nodepool update
ARM Template#
Deploy ARM Template#
- At Management Group:
New-AzManagementGroupDeployment
- At Subscription:
New-AzSubscriptionDeployment
- At Resource Group:
New-AzResourceGroupDeployment
$templateFile = "path/to/template.json"
$parametersFile = "path/to/parameters.json"
$managementGroupName = "MyManagementGroup"
New-AzManagementGroupDeployment -ManagementGroupId $managementGroupName -TemplateFile $templateFile -TemplateParameterFile $parametersFile
$subscriptionId = "MySubscriptionId"
New-AzSubscriptionDeployment -SubscriptionId $subscriptionId -TemplateFile $templateFile -TemplateParameterFile $parametersFile
$resourceGroupName = "MyResourceGroup"
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile $templateFile -TemplateParameterFile $parametersFile
azcopy#
Create Container#
azcopy make "https://<storage-account-name>.blob.core.windows.net/<container-name>"
Copy Folder Recursively#
azcopy copy "<local-folder-path>" "https://<storage-account-name>.blob.core.windows.net/<container-name>" --recursive
Sync#
like rsync, transfer the delta only
azcopy sync "<local-folder-path>" "https://<storage-account-name>.blob.core.windows.net/<container-name>"
Others#
Accept Marketplace Terms#
$publisher = "publisher-name"
$offer = "offer-name"
$plan = "plan-name"
Set-AzMarketplaceTerms -Publisher $publisher -Product $offer -Name $plan -Terms $marketplaceTerms -Accept