Get-AzureADAuditSignInLogs 在自动化帐户中返回 $null

问题描述 投票:0回答:2

我有一个简单的脚本来获取 Azure 中每个用户的最后登录详细信息。从 Visual Studio 运行脚本时,一切运行良好,没有错误。 将脚本上传到 Azure 自动化帐户后,我收到错误消息“对象引用未设置为对象的实例”。

我已经检查过,命令“Get-AzureADAuditSigninLogs”正在返回 $null

$users = Get-AzureADUser -All $true
foreach ( $user in $users ) {
    $userLogs = Get-AzureADAuditSigninLogs -Filter "startsWith(userPrincipalName, '$( $user.UserPrincipalName )')" -All $true
}

关于可能导致此问题发生在自动化帐户而不是 visual studio 中的问题的任何想法?

azure powershell azure-powershell
2个回答
0
投票

根据这个 issue

-All $true
参数对 cmdlet 不起作用
Get-AzureADAuditSignInLogs
正如预期的那样。

要解决它,您可以尝试升级到 AzureADPreview

v2.0.2.89
.

或者,您也可以按照psignoret的建议尝试:

使用 -f 或 [String]::Format() 格式化字符串:

Write-Host ("startsWith(userPrincipalName ,'{0}')" -f $user.userPrincipalName)
Write-Host [String]::Format("startsWith(userPrincipalName ,'{0}')", $user.userPrincipalName)

0
投票

您将无法将 $User.UserPrincipalName 与 Get-AzureADAuditSigninLogs 命令中的过滤器一起使用。您需要先将值保存到另一个变量,然后再使用它。如果您已经在 Get-AzureADUser 命令中使用了 -All,那么如果您只想列出上次登录日期,则不需要。如果您想要所有用户的所有日志,请删除我使用的“-Top”参数。这是更正:-

$users = Get-AzureADUser -All $true
foreach($user in $users) {
    $UPN = $user.UserPrincipalName
    $userLogs = Get-AzureADAuditSigninLogs -Filter "startsWith(UserPrincipalName, '$UPN')" -Top 1
}
© www.soinside.com 2019 - 2024. All rights reserved.