Scripts/MgGraph-Stuff.ps1
|
# Groupmembers $GroupName = "device_TestBIOSupdate" $MgGroup = Get-MgGroup -Filter "displayname eq '$($GroupName)'" $MgGroupMembers = Get-MgGroupMember -GroupId $MgGroup.Id $MgGroupMembers Get-MgGroupMember -GroupId 68e01767-ccfd-41fb-9154-8cfbe69a8ff6 | ForEach-Object { $_.AdditionalProperties | Format-Table } $MgGroupMembers | ForEach-Object { $_.AdditionalProperties | Format-Table } $Members = @( "C3692" "C3671" "C3707" "C3725" "C3704" "C3706" "C3570" "C3664" "C1799" "C3711" "C3722" "C3705" "C3513" "C3709" ) $GroupName = "devices_01" New-MgGroupMemberCustom -GroupName $GroupName -Members $Members # Groep aanmaken $CustomerCode = "KOEK" $GroupName = "C_$($CustomerCode)_MDM_Devices_Test" $GroupName = "C_$($CustomerCode)_MDM_Users_Test" $GroupName = "C_$($CustomerCode)_MDM_Autopilot_Devices_Shared" $GroupName = "C_$($CustomerCode)_MDM_Devices_Windows11Upgrade" $GroupName = "LIC_MS365_BusinessPremium_Temp" $mgGroup = New-MgBetaGroup -DisplayName $GroupName -MailEnabled:$False -MailNickname $GroupName -SecurityEnabled $GroupName = "C_$($CustomerCode)_MDM_Devices_Windows10" $MembershipRule = "(device.deviceOSVersion -startsWith `"10.0.1`") and (device.managementType -eq `"MDM`") and (device.deviceOSType -eq `"Windows`")" $GroupName = "C_$($CustomerCode)_MDM_Devices_Windows11" $MembershipRule = "(device.deviceOSVersion -startsWith `"10.0.2`") and (device.managementType -eq `"MDM`") and (device.deviceOSType -eq `"Windows`")" $GroupName = "C_$($CustomerCode)_MDM_AutoPilot_Devices" $MembershipRule = "(device.devicePhysicalIDs -any _ -contains `"[ZTDId]`")" $MembershipRule = "(device.devicePhysicalIds -any _ -contains `"[ZTDId]`") or ((device.managementType -eq `"MDM`") and (device.deviceOSType -eq `"Windows`") and (device.deviceOwnership -eq `"Company`"))" $GroupName = "C_$($CustomerCode)_MDM_AutoPilot_Devices_SelfDeploying" $MembershipRule = "(device.devicePhysicalIds -any (_ -eq `"[OrderID]:SelfDeploying`"))" $Params = @{ MembershipRule = $MembershipRule DisplayName = $GroupName MailEnabled = $false MailNickname = $GroupName SecurityEnabled = $true GroupTypes = "DynamicMembership" MembershipRuleProcessingState = "On" } New-MgBetaGroup @Params # User aanmaken $Random = $(Get-Random -Minimum 1 -Maximum 10000) $UserPrincipalName = "test.$($Random)@youandme.com" $DisplayName = "Test $($Random)" $Password = "$(Get-Random)1n3uow8efs@@!#" Get-MgSubscribedSku | Format-List New-JAADUser -UserPrincipalName $UserPrincipalName -DisplayName $DisplayName -Password $Password Set-MgUserLicense -UserId $UserPrincipalName -AddLicenses @{SkuId = "710779e8-3d4a-4c88-adb9-386c958d1fdf" } -RemoveLicenses @() Update-MgUser -UserId $UserPrincipalName -Surname "Test" -GivenName "User" # Apps $Apps = Get-MgBetaDeviceAppManagementMobileApp $Apps | Where-Object { $_.AdditionalProperties."@odata.type" -ne "#microsoft.graph.managedIOSStoreApp" -and $_.AdditionalProperties."@odata.type" -ne "#microsoft.graph.managedAndroidStoreApp" } $Apps | Where-Object { $_.AdditionalProperties."@odata.type" -eq "#microsoft.graph.win32LobApp" } $iosApps = $Apps | Where-Object { $_.AdditionalProperties."@odata.type" -eq "#microsoft.graph.iosVppApp" } $iosApps | Where-Object { $_.AdditionalProperties."@odata.type" -eq "#microsoft.graph.iosVppApp" } | Select-Object DisplayName, Publisher | Export-Excel # Voeg nieuwe Autopilot device toe aan een groep $ApDevices = Get-MgDeviceManagementWindowAutopilotDeviceIdentity -All | Where-Object DeploymentProfileAssignedDateTime -GT (Get-Date).AddDays(-7) | Select-Object AzureAdDeviceId $AzDevices = Get-MgDevice -All $ApDevices | ForEach-Object { $Device = $AzDevices | Where-Object DeviceId -EQ $_.AzureAdDeviceId $Device New-MgGroupMember -GroupId "68e01767-ccfd-41fb-9154-8cfbe69a8ff6" -DirectoryObjectId $Device.Id } # Teams WERKT NIET Get-MgTeam Get-MgTeamChannel -TeamId xxx $Params = @{ Body = @{ ContentType = "html" Content = "<h3>Hello World</h3>" } } New-MgTeamChannelMessage -TeamId "18d13f92-3f90-4f40-9411-fb6427f3ddee" -ChannelId "19:b585106cccd744b98b2a1cf96229afc5@thread.skype" -BodyParameter $Params # PS Intune Scripts # $Scripts = Get-MgDeviceManagementScript -All $Scripts = Invoke-GraphRequest -Uri "https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts/" $ScriptContent = $Scripts.value | ForEach-Object -ThrottleLimit 10 -Parallel { Invoke-GraphRequest -Uri "https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts/$($_.Id)" } $Output = @() $ScriptContent | ForEach-Object { $obj = [PSCustomObject]@{ displayName = $_.displayName fileName = $_.fileName scriptContent = [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($($_.scriptContent))) } $Output += $obj # } $Output | Sort-Object displayName | Format-Table $FolderPath = "$($env:TEMP)\$((Get-MgBetaOrganization).DisplayName)-PsScripts" mkdir $FolderPath -Force code $FolderPath $Output | ForEach-Object { $_.scriptContent | Out-File -Encoding ASCII -FilePath $(Join-Path $FolderPath $($_.fileName)) } # Azure Groups Owners and Members $Groups = Get-MgGroup -All #| Where-Object GroupTypes -EQ 'Unified' $Result = @() foreach ($g in $Groups) { $g.Id $g.DisplayName $Team = Get-MgTeam -TeamId $g.Id -ea 0 Get-MgGroupMember -GroupId $g.Id | ForEach-Object { $obj = [PSCustomObject]@{ GroupId = $g.Id DisplayName = $g.DisplayName GroupMail = $g.Mail TeamsSite = $null UserType = "Member" UserName = $_.AdditionalProperties.displayName UserMail = $_.AdditionalProperties.mail UserPrincipalName = $_.AdditionalProperties.userPrincipalName UserJobTitle = $_.AdditionalProperties.jobTitle } if ($Team) { $obj.TeamsSite = "Yes" } $Result += $obj } Get-MgGroupOwner -GroupId $g.Id | ForEach-Object { $obj = [PSCustomObject]@{ GroupId = $g.Id DisplayName = $g.DisplayName GroupMail = $g.Mail TeamsSite = $null UserType = "Owner" UserName = $_.AdditionalProperties.displayName UserMail = $_.AdditionalProperties.mail UserPrincipalName = $_.AdditionalProperties.userPrincipalName UserJobTitle = $_.AdditionalProperties.jobTitle } if ($Team) { $obj.TeamsSite = "Yes" } $Result += $obj } } $Result | Export-Excel # User inventarisatie $Users = Get-MgBetaUser -All -Property id, UserprincipalName, DisplayName, Usertype | Where-Object UserPrincipalName -Match "rubbercompounding.nl" $NewUsers = $Users | Where-Object UserType -EQ Member | ForEach-Object { $License = Get-MgBetaUserLicenseDetail -UserId $_.id [PSCustomObject]@{ UserPrincipalName = $_.UserPrincipalName DisplayName = $_.DisplayName License = $License.SkuPartNumber } } $NewUsers | Format-Table -AutoSize ## Drivers update ring (Invoke-GraphRequest -Uri "https://graph.microsoft.com/beta/deviceManagement/windowsDriverUpdateProfiles/7f81ecb1-84dd-47d6-8061-97f3530a217a/driverInventories?`$filter=category%20eq%20%27recommended%27").value | ConvertTo-Json | ConvertFrom-Json | Export-Excel $driverIds = @( "b7412646efbe6c5f812917e6126824a3be652bf86be9e0aaced13b27b35bdaf1_c2f2105e-780a-435b-bb86-4039f9c243b2" "013394dd187ab514885805265ea380264a2e212629657e0b258bde532816706b_c2f2105e-780a-435b-bb86-4039f9c243b2" "300b0bf98bcd7b2b8417df705d52483c99fa538327f1c44b89172d73582313e3_c2f2105e-780a-435b-bb86-4039f9c243b2" "c82d34e7b4ded5d160bcd8d950ff25abd2373800cec2107b0cf6236663e4527d_c2f2105e-780a-435b-bb86-4039f9c243b2" "20513f5ace30eef8c5e4db65dc28e362fe06b30024646757b46eb89558e1720a_c2f2105e-780a-435b-bb86-4039f9c243b2" "876f6c44f29a6e4d36ae6345a0318714a4fe12e6171a8ed08bb6450b8d31ec02_c2f2105e-780a-435b-bb86-4039f9c243b2" "4f3d42c0e323da95a9f375aa0942bbfb65dc71e0a69039363cb14925c22cbb0a_c2f2105e-780a-435b-bb86-4039f9c243b2" "74779ad1670cf975d7285d2ed6c0e349a3a772d60c670fe0e56a41c2e9521f25_c2f2105e-780a-435b-bb86-4039f9c243b2" "0d7a8d95c80e73829ddd53c0e0a319cf0d76d8cd45be3f738662e2f7a40e9d97_c2f2105e-780a-435b-bb86-4039f9c243b2" "65e7ddc2c21ec0a1a3601a68529f798f9838a554140da8400793285f1ffbf3c7_c2f2105e-780a-435b-bb86-4039f9c243b2" "8c11bf2b8575672c95c74df6ee6d28086858ac5a358cdf5afa9bfa4e61621ec9_c2f2105e-780a-435b-bb86-4039f9c243b2" ) # Approve $driverIds | ForEach-Object { Invoke-MgBetaExecuteDeviceManagementWindowsDriverUpdateProfileAction -WindowsDriverUpdateProfileId 7f81ecb1-84dd-47d6-8061-97f3530a217a -ActionName 'approve' -DeploymentDate 10/09/2023 -DriverIds $_ } # Group members and owners $mgGroups = Get-MgBetaGroup -GroupId afc77666-75c9-422e-a185-640dfedc400a $mgUnifiedGroups = $mgGroups #| Where-Object grouptypes -Match Unified $result = @() $mgGroups | ForEach-Object { $members = "" Get-MgBetaGroupMember -GroupId $_.Id | ForEach-Object { $members += $_.AdditionalProperties.userPrincipalName $members += ", " } $owners = "" Get-MgBetaGroupOwner -GroupId $_.Id | ForEach-Object { $owners += $_.AdditionalProperties.userPrincipalName $owners += ", " } $obj = [PSCustomObject]@{ Name = $_.DisplayName Owner = $owners Members = $members } $result += $obj } $result # User export inclusief proxyaddress Get-MgBetaUser -All -Filter "usertype eq 'member'" -OutVariable mgUsers $users = @() $users = $mgUsers | Where-Object UserType -eq "member" | Sort-Object UserPrincipalName | Select-Object DisplayName, Id, Mail, UserPrincipalName, AccountEnabled, @{name = "onmicrosoft"; expression = { $_.ProxyAddresses | ForEach-Object { if ($_ -match "onmicrosoft") { $_ -replace "smtp:" } } } }, @{name = "proxyaddresses"; expression = { ($_.ProxyAddresses | ForEach-Object { if ($_ -notmatch "X500") { $_ } } ) -join ";" } }, @{name = "licenses"; expression = { (Get-MgBetaUserLicenseDetail -UserId $_.Id).SkuPartNumber -join ";" } } $users | Format-Table $users[0..10] | Format-List # Passwords and AD Entra ID Sync $user = "jan.klaassen@pietjepuk.nl" Get-MgBetaUser -UserId $user -Property UserPrincipalName, PasswordPolicies | Select-Object UserPrincipalName, PasswordPolicies | ConvertTo-Json | clip Get-MgBetaUser -All -Filter "usertype eq 'member'" -Property UserPrincipalName, DisplayName, PasswordPolicies | Sort-Object DisplayName | Select-Object UserPrincipalName, DisplayName, PasswordPolicies Get-MgBetaUser -All -Filter "usertype eq 'member' and OnPremisesSyncEnabled eq true" -Property UserPrincipalName, DisplayName, PasswordPolicies, OnPremisesSyncEnabled | Sort-Object DisplayName | Select-Object UserPrincipalName, DisplayName, PasswordPolicies # $params = @{ # passwordProfile = @{ # forceChangePasswordNextSignIn = $true # } # } # Update-MgBetaUser -UserId $user -BodyParameter $params $OnPremSync = Get-MgBetaDirectoryOnPremiseSynchronization $OnPremSync | ConvertTo-Json $OnPremSync.Features.CloudPasswordPolicyForPasswordSyncedUsersEnabled = $true $OnPremSync.Features.UserForcePasswordChangeOnLogonEnabled = $true Update-MgBetaDirectoryOnPremiseSynchronization -OnPremisesDirectorySynchronizationId $OnPremSync.Id -Features $OnPremSync.Features # $user = "jan.klaassen@pietjepuk.nl" Update-MgBetaUser -UserId $user -PasswordPolicies None $passwordprofile = @{} $passwordprofile["forceChangePasswordNextSignIn"] = $true $passwordprofile["forceChangePasswordNextSignInWithMfa"] = $true Update-MgBetaUser -UserId $user -PasswordProfile $passwordprofile -Verbose # Set user Immutable ID $UserPrincipalName = "test.user@domain.com" $SamAccountName = "test.user" $guid = (Get-ADUser $SamAccountName).ObjectGUID $immutableID = [System.Convert]::ToBase64String($guid.ToByteArray()) Write-Output "Update-MgBetaUser -UserId `"$UserPrincipalName`" -OnPremisesImmutableId `"$($immutableID)`"" $adUsers = Get-ADUser -Filter * -SearchBase "OU=Accounts,$((Get-ADDomain).DistinguishedName)" $adUsers = Get-ADUser -Filter * -SearchBase "OU=Mail,$((Get-ADDomain).DistinguishedName)" foreach ($u in $adusers) { $guid = $u.ObjectGUID $immutableID = [System.Convert]::ToBase64String($guid.ToByteArray()) Write-Output "Update-MgBetaUser -UserId `"$($u.UserPrincipalName)`" -OnPremisesImmutableId `"$($immutableID)`"" } Get-MgBetaUser -All -Filter "usertype eq 'member'" -OutVariable mgUser foreach ($u in $mgUser) { Update-MgBetaUser -UserId $($u.UserPrincipalName) -OnPremisesImmutableId $null } |