Skip to content

Instantly share code, notes, and snippets.

View arjancornelissen's full-sized avatar

Arjan Cornelissen arjancornelissen

View GitHub Profile
@arjancornelissen
arjancornelissen / Enable-PIMGraph.ps1
Last active April 15, 2024 16:54
Enable PIM role via the Graph PowerShell Modules
# Connect via deviceauthentication and get the TenantID and User ObjectID
Connect-MgGraph -UseDeviceAuthentication
$context = Get-MgContext
$currentUser = (Get-MgUser -UserId $context.Account).Id
# Get all available roles
$myRoles = Get-MgRoleManagementDirectoryRoleEligibilitySchedule -ExpandProperty RoleDefinition -All -Filter "principalId eq '$currentuser'"
# Get SharePoint admin role info
$myRole = $myroles | Where-Object {$_.RoleDefinition.DisplayName -eq "SharePoint Service Administrator"}
@arjancornelissen
arjancornelissen / Enhanced-where-objectLargeDataset.ps1
Last active July 23, 2019 20:15
Enhanced where-object on large datalist
$msolusers = Get-MsolUser -All | Select-object ObjectId, WhenCreated, LastPasswordChangeTimestamp, @{n="mfaenabled";e={$_.StrongAuthenticationMethods.Count -gt 0}}
$users = Get-AzureADUser -All $true | Select-Object ObjectId, UserPrincipalName, DisplayName, @{n="onpremDN";e={$_.ExtensionProperty.onPremisesDistinguishedName}}, CompanyName, AccountEnabled, UserType
# Create empty array and do a foreach on every item, this takes a few seconds on 30.000 items
$msoluserArray = @{}
$i=0
$msolusers.foreach({
$msoluserArray["$($psitem.ObjectId)"] = $i
$i++
})
@arjancornelissen
arjancornelissen / where-objectLargeDataset.ps1
Created July 23, 2019 20:12
Where-Object on large datasets
$msolusers = Get-MsolUser -All | Select-object ObjectId, WhenCreated, LastPasswordChangeTimestamp, @{n="mfaenabled";e={$_.StrongAuthenticationMethods.Count -gt 0}}
$users = Get-AzureADUser -All $true | Select-Object ObjectId, UserPrincipalName, DisplayName, @{n="onpremDN";e={$_.ExtensionProperty.onPremisesDistinguishedName}}, CompanyName, AccountEnabled, UserType
foreach($user in $users)
{
$msoluser = $msolusers | where-object {$_.ObjectID -eq $user.ObjectID}
# do something with this data
}
@arjancornelissen
arjancornelissen / Convert-MailboxAudittoDefault.ps1
Created April 3, 2019 09:38
Script to set every mailbox to use the default auditing settings from Microsoft
$mailboxes = Get-Mailbox -ResultSize Unlimited
$total = $mailboxes.Count
$count = 0
foreach($mailbox in $mailboxes){
Write-Progress -Activity "Updating auditing: $($mailbox.UserPrincipalName) ($count or $total)" -PercentComplete ($count/$total*100)
$count++
Set-Mailbox -Identity $mailbox.ExternalDirectoryObjectId -DefaultAuditSet Owner, Admin, Delegate
}
@arjancornelissen
arjancornelissen / Enable-TeamsUserTranslation.ps1
Last active January 26, 2019 20:40
Enables user translation for Microsoft Teams
# For a single Policy
Set-CsTeamsMessagingPolicy -Identity Tag:Default -AllowUserTranslation $true
# For all Policies
Get-CsTeamsMessagingPolicy | Set-CsTeamsMessagingPolicy -AllowUserTranslation $true
@arjancornelissen
arjancornelissen / Connect-SkypeforBusiness.ps1
Last active January 26, 2019 20:32
Connect to Skype for Business
Import-Module SkypeOnlineConnector
$sfbSession = New-CsOnlineSession -UserName <username>
Import-PSSession $sfbSession
$roleid = Get-PrivilegedRoleAssignment | Where-Object {$_.RoleName -eq "SharePoint Service Administrator"}
Enable-PrivilegedRoleAssignment -TicketNumber "I376524" -Reason "Handling SharePoint issue" -Duration 2 -RoleId $roleid
@arjancornelissen
arjancornelissen / Update-ImmutableId.ps1
Created August 26, 2018 09:16
Update cloud user with the on-premises ImmutableId
$aaduser = Get-AzureADUser -SearchString <Cloud username>
Set-AzureADUser -ObjectId $aaduser.ObjectId -ImmutableId $ImmutableId
@arjancornelissen
arjancornelissen / Calculate-ImmutableId.ps1
Last active August 27, 2018 16:56
Calculate ImmutableId
$user = Get-ADUser -Identity <username>
$ImmutableId = [System.convert]::ToBase64String($user.ObjectGUID.ToByteArray())
@arjancornelissen
arjancornelissen / Get-mailboxSize.ps1
Created June 25, 2018 20:37
Get Shared and resource mailbox size
$mailboxes = Get-Mailbox -ResultSize unlimited -Filter {RecipientTypeDetails -eq "SharedMailbox" -or RecipientTypeDetails -eq "RoomMailbox" -or RecipientTypeDetails -eq "EquipmentMailbox"}
foreach($mailbox in $mailboxes)
{
$mailboxstats = Get-MailboxStatistics -Identity $mailbox.UserPrincipalName | Select-Object DisplayName, Identity, TotalItemSize
$mailboxsizeLine = [PSCustomObject][Ordered]@{
Identity = $mailbox.Identity
UPN = $mailbox.UserPrincipalName
DisplayName = $mailboxstats.DisplayName
TotalItemSize = $mailboxstats.TotalItemSize