Hello everybody,
I wrote this code to automatically set the status on Microsoft Teams at a given time:
But when I run it I get this error:
Update-MgUserPresence : Error authenticating with resource
Status: 400 (BadRequest)
ErrorCode: AuthenticationError
Date: 2024-07-23T20:28:52
Headers:
Transfer-Encoding : chunked
Vary : Accept-Encoding
Strict-Transport-Security : max-age=31536000
request-id : 87db3c9f-7a31-4959-bd91-5b0f4609be5a
client-request-id : 50a7370d-4654-4614-b643-df535fd2cbad
x-ms-ags-diagnostic : {"ServerInfo":{"DataCenter":"Switzerland
North","Slice":"E","Ring":"3","ScaleUnit":"000","RoleInstance":"ZR1PEPF0000066C"}}
Date : Tue, 23 Jul 2024 20:28:51 GMT
In C:\Users\my_user\Desktop\MyScript.ps1:33 car:1
- Update-MgUserPresence -UserId $userId -Availability $statusAvailabili ...
-
+ CategoryInfo : InvalidOperation: ({ UserId = my_email_address...GraphPresence }:<>f__AnonymousType56`3) [Update-MgU
serPresence_UpdateExpanded], Exception
+ FullyQualifiedErrorId : AuthenticationError,Microsoft.Graph.PowerShell.Cmdlets.UpdateMgUserPresence_UpdateExpand
ed
# Imposta l'ID dell'utente
$userId = "my_email_address"
# Imposta lo stato di disponibilità (es. Available, Busy, DoNotDisturb, etc.)
$statusAvailability = "Busy"
# Autentica con Microsoft Graph
Connect-MgGraph -Scopes "User.ReadWrite.All"
# Imposta l'ora a cui desideri che lo stato venga impostato
$targetTime = Get-Date -Hour 22 -Minute 39 -Second 0
# Controlla l'orario attuale
$currentDateTime = Get-Date
Bu
# Verifica se è già passata l'ora di impostazione
if ($currentDateTime -ge $targetTime) {
Write-Host "È già passata l'ora di impostazione. Lo stato verrà impostato domani."
$targetTime = $targetTime.AddDays(1)
}
# Calcola la differenza di tempo tra l'orario attuale e l'orario di impostazione
$timeDifference = $targetTime - $currentDateTime
# Mostra un conto alla rovescia
$totalSeconds = [math]::Ceiling($timeDifference.TotalSeconds)
for ($i = $totalSeconds; $i -gt 0; $i--) {
Write-Host -NoNewline "Attesa: $i secondi rimanenti `r"
Start-Sleep -Seconds 1
}
# Imposta lo stato di disponibilità
Update-MgUserPresence -UserId $userId -Availability $statusAvailability
Write-Host "Stato di disponibilità impostato correttamente per l'utente con ID $userId alle 22:32."
# Disconnette la sessione di Microsoft Graph
Disconnect-MgGraph
$userId = "my_email_address"
# Imposta lo stato di disponibilità (es. Available, Busy, DoNotDisturb, etc.)
$statusAvailability = "Busy"
# Autentica con Microsoft Graph
Connect-MgGraph -Scopes "User.ReadWrite.All"
# Imposta l'ora a cui desideri che lo stato venga impostato
$targetTime = Get-Date -Hour 22 -Minute 39 -Second 0
# Controlla l'orario attuale
$currentDateTime = Get-Date
# Verifica se è già passata l'ora di impostazione
if ($currentDateTime -ge $targetTime) {
Write-Host "È già passata l'ora di impostazione. Lo stato verrà impostato domani."
$targetTime = $targetTime.AddDays(1)
}
# Calcola la differenza di tempo tra l'orario attuale e l'orario di impostazione
$timeDifference = $targetTime - $currentDateTime
# Mostra un conto alla rovescia
$totalSeconds = [math]::Ceiling($timeDifference.TotalSeconds)
for ($i = $totalSeconds; $i -gt 0; $i--) {
Write-Host -NoNewline "Attesa: $i secondi rimanenti `r"
Start-Sleep -Seconds 1
}
# Imposta lo stato di disponibilità
Update-MgUserPresence -UserId $userId -Availability $statusAvailability
Write-Host "Stato di disponibilità impostato correttamente per l'utente con ID $userId alle 22:32."
# Disconnette la sessione di Microsoft Graph
Disconnect-MgGraph