我目前正在致力于监视 AzureAD(或 EntraID)中的非活动用户帐户。为此,我使用 PowerShell 和 MgGraph 来收集用户信息及其上次登录日期。
为了仅过滤掉 Azure 用户(而非本地用户),我使用了 OnPremisesSyncEnabled 属性。然而,这个属性在我们的环境中似乎是空的,这给识别所需的用户帐户带来了一些挑战。
我编写了以下脚本(与Graph的连接已经完成)
$users = Get-MgUser -All | Where-Object { $_.OnPremisesSyncEnabled -eq $none -and $_.UserType -ne "Guest" -and $_.SignInActivity.LastSignInDateTime -lt (Get-Date).AddDays(-180) }
$users | Select-Object UserPrincipalName, OnPremisesSyncEnabled, @{Name="LastSignIn"; Expression={$_.SignInActivity.LastSignInDateTime}}
此脚本不返回任何内容...有人知道如何正确监控它吗?
当指向
OnPremisesSyncEnabled
端点时,仅在 $select
(使用 -Select
时为 Get-MgUser
)检索 v1.0
。请参阅属性。
顺便说一句,这里根本不需要
Where-Object
。过滤可以在 Azure 端完成。
$date = [datetime]::UtcNow.AddDays(-180).ToString('s') + 'Z'
$getMgUserSplat = @{
Filter = "onPremisesSyncEnabled eq null and userType ne 'Guest' and signInActivity/lastSignInDateTime le $date"
CountVariable = 'count'
Select = 'UserPrincipalName', 'OnPremisesSyncEnabled', 'signInActivity'
ConsistencyLevel = 'eventual'
}
$users = Get-MgUser @getMgUserSplat
$users | Select-Object UserPrincipalName, OnPremisesSyncEnabled, @{ N='LastSignIn'; E={ $_.SignInActivity.LastSignInDateTime }}