使用Get-MgAuditLogSignIn获取Azure AD B2C最新SignInLogs遇读取流错误
解决Get-MgAuditLogSignIn的"Stream does not support reading"错误
针对你遇到的Stream does not support reading. (Parameter 'stream')警告,可通过以下步骤解决:
1. 升级Microsoft Graph PowerShell模块
该报错常见于旧版模块的流处理bug,执行以下命令升级到最新版本:
# 需以管理员身份运行PowerShell Install-Module -Name Microsoft.Graph -Force -AllowClobber
若已安装模块,可直接用Update-Module Microsoft.Graph完成更新。
2. 替换-All参数,改用服务端过滤减少数据量
原代码中-All会一次性拉取所有登录日志,数据量过大时易触发流读取错误。建议在请求阶段就通过-Filter参数在服务端过滤目标租户的日志,避免本地处理海量数据:
优化后的函数示例:
Function Get-LastSignIn { Param ( [string] $TenantDomain # Example: "contoso.onmicrosoft.com" ) Try { # 服务端过滤目标租户日志,按创建时间倒序取最新1条 $latestSignIn = Get-MgAuditLogSignIn -Filter "userPrincipalName ends with '@$TenantDomain'" ` -Sort "createdDateTime desc" ` -Top 1 ` -ErrorAction Stop If ($latestSignIn) { Return [PSCustomObject]@{ LastSignIn = $latestSignIn.createdDateTime LastSignedUser = $latestSignIn.userPrincipalName } } } Catch { Write-Warning "Failed to retrieve last sign-in logs for: $TenantDomain. Error: $($_.Exception.Message)" } Return [PSCustomObject]@{ LastSignIn = "N/A"; LastSignedUser = "N/A" } }
3. 确认租户上下文与权限
运行Connect-MgGraph时需指定正确的B2C租户信息,并确保账号拥有日志读取权限:
Connect-MgGraph -TenantId "你的B2C租户ID" -Scopes "AuditLog.Read.All"
内容的提问来源于stack exchange,提问作者Senior Systems Engineer
相关产品推荐
相关产品推荐

