You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell调用Microsoft Graph API获取Office365指定用户登录活动

问题排查与解决方案

1. PowerShell中Graph API请求$select参数报错的解决

在PowerShell里,$是变量标识符,直接在双引号包裹的URL中写$select会被解析成PowerShell变量,而非Graph API的查询参数,这是核心问题。解决方式有两种:

  • 方式一:转义$符号
    在$select前加PowerShell的转义符反引号(),确保$`被当作普通字符传递给Graph API:

    $requestUrl = "https://graph.microsoft.com/beta/users/$userId?`$select=signInActivity"
    
  • 方式二:用单引号拼接URL
    单引号内的内容不会被PowerShell解析变量,直接保留原始字符串:

    $requestUrl = 'https://graph.microsoft.com/beta/users/' + $userId + '?$select=signInActivity'
    

额外确认点:

  • 脚本使用的是应用权限(而非委托权限),且Directory.Read.All和AuditLog.Read.All权限已获得全局管理员同意。
  • 若用Connect-MgGraph模块,需确保连接时指定应用权限(比如证书认证方式),而非交互式登录的委托权限。

2. VS Code提示$userId变量未使用的解决

这通常是PSScriptAnalyzer规则的误判,或变量使用方式未被正确识别,可通过以下方式解决:

  • 显式引用变量:在构建URL后添加一行日志输出,让分析器明确识别变量已被使用:

    Write-Host "正在查询用户ID: $userId"
    
  • 改用字符串格式化:调整URL拼接方式,让分析器更容易检测到变量引用:

    $requestUrl = [string]::Format("https://graph.microsoft.com/beta/users/{0}?`$select=signInActivity", $userId)
    
  • 刷新VS Code缓存:按下Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),执行Reload Window操作清除分析器缓存。

完整示例脚本

# 导入CSV文件(CSV需包含UPN列)
$users = Import-Csv -Path "users.csv"

# 配置Graph API应用权限认证(以证书认证为例)
$clientId = "你的应用ID"
$tenantId = "你的租户ID"
$certThumbprint = "证书指纹"
Connect-MgGraph -ClientId $clientId -TenantId $tenantId -CertificateThumbprint $certThumbprint

foreach ($user in $users) {
    # 根据UPN获取用户ID
    $userId = (Get-MgUser -Filter "userPrincipalName eq '$($user.UPN)'").Id
    
    # 构建正确的请求URL
    $requestUrl = "https://graph.microsoft.com/beta/users/$userId?`$select=signInActivity"
    
    # 显式引用变量消除VS Code提示
    Write-Verbose "处理用户: $($user.UPN),ID: $userId" -Verbose
    
    # 发送请求并提取lastSignInDateTime
    $userActivity = Invoke-MgGraphRequest -Uri $requestUrl -Method Get
    $lastSignIn = $userActivity.signInActivity.lastSignInDateTime
    
    # 输出结构化结果
    [PSCustomObject]@{
        UserUPN = $user.UPN
        UserId = $userId
        LastSignInDateTime = $lastSignIn
    }
}

内容的提问来源于stack exchange,提问作者Bernietechy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 17:20:15