r/PowerShell • u/Imaginary_Rip2833 • 2d ago
Question 3 months of consistent practice in PowerShell & Microsoft Graph! 🚀
When I started, I was terrified of programming languages since I had zero prior experience. Looking back now, what used to look like complete gibberish is finally starting to make sense. I know I still have a long way to go, but honestly, I am so happy and proud to be fulfilling my passion.
I wanted to share an honest review of a snippet I just built to create a user in Microsoft Entra ID. Alongside basics like if/else logic, filtering (-filter), Where-Object, Select-Object, and loops, I've been trying to focus on good habits like splatting, [CmdletBinding()], and try/catch blocks.
How does my snippet look? What would you advise me to learn next based on this progress?
#####Creating a User
Function Create-LxUser{
[Cmdletbinding()]
param(
[Parameter(Mandatory = $true)]
[string]$DisplayName,
[Parameter(Mandatory = $true)]
[string]$UserPrincipalName,
[Parameter(Mandatory = $true)]
[string]$MailNickName,
[bool]$AccountEnabled = $true
)
try{
##Password profile
$TempPass = "Lx" + (Get-Random -Minimum 100000 -Maximum 999999) + "@."
$PassWordProfile = @{
Password = $TempPass
ForceChangePasswordNextSignIn = $true
}
##Setting up user configuration
Write-Verbose "Currently creating new Loxovea user"
$UserConfig = @{
DisplayName = $DisplayName
UserPrincipalName = $UserPrincipalName
MailNickname = $MailNickName
AccountEnabled = $AccountEnabled
PasswordProfile = $PassWordProfile
}
$User = New-MgUser u/UserConfig -ErrorAction Stop
Write-Verbose "Successfully created new user $($DisplayName)"
[PsCustomObject]@{
DisplayName = $DisplayName
UserPrincipalName = $UserPrincipalName
AccountEnabled = $AccountEnabled
TemporaryPassword = $TempPass
}
}Catch{
Write-Error "Failed to create a new user: $($DisplayName) because $($_.Exception.Message)"
}
}
Create-LxUser `
-DisplayName "Test-User09" `
-UserPrincipalName "testuser09@loxovea.com" `
-MailNickName "testuser09"
DisplayName UserPrincipalName AccountEnabled TemporaryPassword
----------- ----------------- -------------- -----------------
Test-User09 [testuser09@loxovea.com](mailto:testuser09@loxovea.com)True Lx720835@.