如何通过PowerShell获取所有Azure VM的JIT状态并导出Excel
Azure 虚拟机JIT状态查询PowerShell实现方案
前置依赖
运行脚本前先完成环境准备,在PowerShell中执行以下命令安装所需模块、登录Azure账号:
# 安装Azure官方Az模块,已安装可跳过 Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force # 安装Excel导出模块(无需本地安装Office即可生成xlsx文件),已安装可跳过 Install-Module -Name ImportExcel -Scope CurrentUser -Repository PSGallery -Force # 登录Azure账号 Connect-AzAccount # 若存在多个订阅,替换下方<订阅ID>为目标订阅ID后执行,切换到查询上下文 Set-AzContext -SubscriptionId "<你的目标订阅ID>"
完整查询脚本
脚本会自动拉取当前订阅下所有虚拟机,匹配安全中心配置的JIT策略,标记每台VM的启用状态,最终导出为Excel文件:
# 定义Excel导出路径,可自行修改 $exportPath = "C:\Temp\Azure_VM_JIT_Status.xlsx" # 初始化结果数组 $result = @() # 获取当前订阅下所有JIT访问策略 $jitPolicies = Get-AzResource -ResourceType "Microsoft.Security/jitNetworkAccessPolicies" -ErrorAction SilentlyContinue # 获取订阅下所有虚拟机 $allVMs = Get-AzVM -Status foreach ($vm in $allVMs) { # 匹配当前VM关联的JIT策略 $matchedJit = $jitPolicies | Where-Object { $_.Properties.virtualMachines.id -contains $vm.Id } # 组装状态信息 $vmStatus = [PSCustomObject]@{ VM名称 = $vm.Name 资源组 = $vm.ResourceGroupName 所在区域 = $vm.Location 操作系统 = if ($vm.StorageProfile.OsDisk.OsType) { $vm.StorageProfile.OsDisk.OsType } else { $vm.StorageProfile.ImageReference.Offer } JIT启用状态 = if ($matchedJit) { "已启用" } else { "未启用" } JIT允许端口 = if ($matchedJit) { ($matchedJit.Properties.ports | ForEach-Object { "$($_.protocol):$($_.number)" }) -join ";" } else { $null } JIT策略更新时间 = if ($matchedJit) { $matchedJit.Properties.lastModifiedTimeUtc } else { $null } } $result += $vmStatus } # 导出为Excel文件,自动适配列宽 $result | Export-Excel -Path $exportPath -AutoSize -WorksheetName "JIT状态统计" # 控制台输出统计结果 $enabledCount = ($result | Where-Object JIT启用状态 -eq "已启用").Count $disabledCount = ($result | Where-Object JIT启用状态 -eq "未启用").Count Write-Host "查询完成:共统计VM $($result.Count) 台,其中JIT已启用 $enabledCount 台,未启用 $disabledCount 台,结果已导出至 $exportPath"
补充说明
- 如果需要跨多个订阅查询,可以在登录后遍历
Get-AzSubscription返回的所有订阅,逐个切换上下文执行上述查询逻辑,合并结果后再导出即可 - 如果不想安装ImportExcel模块,可将最后导出Excel的命令替换为
$result | Export-Csv -Path "C:\Temp\Azure_VM_JIT_Status.csv" -NoTypeInformation -Encoding UTF8,生成的CSV文件可直接用Excel打开编辑 - 运行脚本的账号需要拥有订阅级别的虚拟机读取权限、安全中心策略读取权限,否则会出现数据拉取不全的问题
内容的提问来源于stack exchange,提问作者Suri007
相关产品推荐
相关产品推荐

