# AZ-104 lab scripts build throwaway Azure infrastructure, and the folder name tells you which generation to use

> A PowerShell 7 repository of lab preparation scripts for the Microsoft Azure Administrator Associate exam, organised by exam topic code, each script printing a date-stamped resource group, VM addresses and a hardcoded password you are expected to delete afterwards.

**rithinskaria/AZ-104** — Azure scripts

- Repository: https://github.com/rithinskaria/AZ-104
- Stars: 102 · Forks: 242
- Language: PowerShell
- License: not declared
- Published: 2026-08-17 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/rithinskaria-az-104

## The v1 folder is named DO NOT USE FOR LABS, and v2 is PowerShell 7

The repository has almost nothing in it but a README and two directories, and the directory names carry the guidance. One is called v1 - DO NOT USE FOR LABS, the other is simply v2. The note at the top of the README says the repository has been updated to v2, with refreshed scripts written in PowerShell 7 and aligned with the new course topics, and that v1 is kept for reference purposes only. The legacy section says the older scripts should not be used for labs because the README states they are not under active development and may encounter issues. That is an unusually blunt warning for a study repository, and it is consistent: v1 is kept so you can see what changed rather than so you can run it. The exam itself is the Microsoft Azure Administrator Associate certification, whose domains run from Azure identities and governance through storage, compute, virtual networking, and monitoring and backup.

## Four commands get you from a shell to a running lab

The run loop is short enough to memorise, and the prerequisites are pinned before it. You need PowerShell 7 or later, the Azure PowerShell module installed with Install-Module -Name Az -Repository PSGallery -Force, a subscription with permissions to create resources, and optionally the Azure CLI for alternative management tasks. Then the sequence is four commands:

```powershell
Connect-AzAccount
Set-AzContext -SubscriptionId "your-subscription-id"
cd "v2/050- Administer Virtual Networking"
.\nsg-prep-infra.ps1
```

The subscription step is conditional on having more than one, and the folder name in the cd command is the exam topic code followed by its title, which is the naming convention the whole v2 tree follows. Note that the script is invoked by relative path with a leading dot slash, which is ordinary PowerShell behaviour and worth expecting if you have come from a POSIX shell.

## Every script prints a password, and the README tells you not to keep it

Each script reports three things when it finishes: the resource group name, the VM fully qualified names with their private IPs, and the default credentials. Those credentials are the username kodekloud with the password VMP@55w0rd, and they appear in the common configuration section as well as in the output list, so they are not a secret anything is hiding. The README carries an explicit security warning that the scripts use hardcoded credentials for lab purposes only and that they should not be used in production environments. The second warning is about money: all scripts create billable Azure resources, and the instruction is to delete the resource groups after completing labs to avoid unnecessary charges. The third is about quota, with a note to ensure the subscription has sufficient quota for the VMs being created, which matters most for the two largest labs.

## One set of defaults applies to every v2 script

Rather than repeating configuration per lab, the scripts share a common block, and knowing it tells you what you are about to pay for. The default region is East US, though some scripts deliberately use more than one region. The VM size is Standard_B1s, described as cost-effective for labs, which is the single most important line in that list for anyone watching a budget. Images are Ubuntu 22.04 LTS for Linux VMs and Windows Server 2022 for Windows VMs. The username and password are the pair above. And resource groups are named rg-{purpose}-YYYYMMDD, so the name carries both what the lab is for and the date it was built, which is what makes cleanup tractable when you have several labs running and no memory of which is which.

## The networking lab gives you two subnets and four VMs to filter

The first v2 lab, under topic 050 for administering virtual networking, is nsg-prep-infra.ps1, and its stated purpose is to create a test environment with two workloads so you can practise Network Security Group configuration. What it creates is a resource group named rg-nsg-workload-YYYYMMDD, a virtual network called vnet-workloads on 192.168.0.0/16, and two subnets, snet-workload-a on 192.168.1.0/24 and snet-workload-b on 192.168.2.0/24. Inside them sit four Ubuntu VMs, two per subnet, each with a Standard public IP. The use case is configuring NSG rules, application security groups and network traffic filtering. Two workloads in separate subnets is the point: you need a permitted path and a denied one to see a rule take effect.

## Topic 060 carries two labs, one for peering and one for endpoints

The intersite connectivity topic holds two separate scripts rather than one. peering-pref-infra.ps1 creates virtual machines in different Azure regions so you can practise peering, and the resources are a group named rg-vnet-peering-YYYYMMDD, an East US virtual network vnet-eus on 192.168.0.0/24 with VM vm-eus, and a West US virtual network vnet-wus on 192.168.1.0/24 with VM vm-wus. Its use case covers VNet peering, gateway transit and cross-region connectivity, so the two regions are the point rather than a detail. service-endpoints-prep-infra.ps1 creates rg-se-workload-YYYYMMDD, a virtual network vnet-01 with an Ubuntu VM, and an Azure Storage Account on Standard LRS, for practising service endpoints, private endpoints and securing Azure services to a VNet.

## The application gateway lab is the biggest one in the repository

Under topic 070 for administering network traffic, appgw-prep-infra.ps1 builds a multi-tier web application environment: rg-appgw-YYYYMMDD, a virtual network color-web-vnet on 10.0.0.0/16, four subnets named jumpbox, green, red and blue, six backend VMs at two per colour pool, one jumpbox VM, an NSG with an HTTP allow rule, and a Custom Script Extension for web server configuration. The use case is Application Gateway, backend pools, routing rules, URL-based routing and health probes, so the colour naming exists to make pool membership legible. The sibling script in the same topic, loadbalancer-prep-infra.ps1, is smaller: rg-azlb-YYYYMMDD, a virtual network eus-web-dev on 10.0.0.0/16, an availability set holding three web server VMs, a jumpbox with a Custom Script Extension, and an NSG allowing HTTP, for Load Balancer, backend pools, health probes, load balancing rules and NAT rules.

## Bastion and monitoring cover the last two topic codes

The final two v2 labs are the ones closest to day-to-day administration. bastion-prep-infra.ps1, under topic 090 for administering Azure virtual machines, creates rg-remoteaccess-YYYYMMDD, a virtual network vnet-remoteaccess on 10.0.0.0/16, a Windows Server 2022 VM in a windows subnet and an Ubuntu 22.04 VM in a linux subnet, with individual NSGs on each subnet. Its purpose is deploying and configuring Azure Bastion for secure RDP and SSH access without public IPs, which is why the two operating systems appear together. monitoring-prep-infra.ps1, under topic 120, creates rg-secops-YYYYMMDD, a virtual network vnet-workloads on 10.0.0.0/16, a Windows Server 2022 VM and an Ubuntu VM, and an Azure App Service on a Basic tier App Service Plan, for practising Azure Monitor, Log Analytics, metrics, alerts, diagnostic settings and Application Insights.

## Conclusion

Use this repository if you are working through the AZ-104 domains and want to practise a configuration against something real rather than in the portal by hand, since each script turns an exercise into a state you can inspect and then throw away. Work only in the v2 directory, since the v1 folder is named for what it is and the README says those scripts are not under active development. Three habits will save you money and confusion. Read the resource group name each script prints and delete it with Remove-AzResourceGroup when the lab is done, because every script creates billable resources. Treat the printed username and password as lab scaffolding rather than as anything to reuse, which the README is explicit about. And check your subscription quota before the four-VM and six-VM labs, since the README flags resource limits as a known failure point.

## FAQ

### What is AZ-104?

AZ-104 is the Microsoft Azure Administrator Associate certification. The README describes it as assessing the ability to manage Azure identities and governance, implement and manage storage, deploy and manage Azure compute resources, configure and manage virtual networking, and monitor and back up Azure resources.

### What is the AZ-104 course material in this repository?

It is lab scripts rather than a course. The v2 directory is organised by exam topic code, with labs under 050 for virtual networking, 060 for intersite connectivity, 070 for network traffic, 090 for virtual machines and 120 for monitoring, each written in PowerShell 7.

### Is AZ-104 a beginner-level certification?

The repository does not label it either way. What it does state is the bar for running its labs: PowerShell 7 or later, the Az PowerShell module, and an Azure subscription with permissions to create resources, which is the part that is easy to underestimate.

### Which is better, AZ-900 or AZ-104?

Nothing in this repository compares the two. AZ-900 is not mentioned anywhere; what is here covers only the AZ-104 domains and the labs that go with them, and it does not cover exam scheduling or how to book a sitting.

## Sources

- [Official README](https://github.com/rithinskaria/AZ-104#readme)
- [Project repository](https://github.com/rithinskaria/AZ-104)
- [README](https://github.com/rithinskaria/AZ-104/blob/main/README.md)
- [Releases](https://github.com/rithinskaria/AZ-104/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/rithinskaria-az-104
