You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何无需RDP为Azure虚拟机规模集配置Windows Defender排除项

无需RDP配置Windows Defender排除项的解决方案

当然可以不用逐个RDP到VM里配置!针对Azure虚拟机规模集(VMSS)+ Service Fabric的场景,有几种高效的批量配置方式,下面给你详细拆解:

1. 使用Azure自定义脚本扩展(Custom Script Extension)

这是最直接的批量配置方式,你可以编写PowerShell脚本添加Defender排除项,再通过VMSS扩展推送到所有实例:

  • 先写好PowerShell脚本(比如命名为Add-DefenderExclusions.ps1),示例内容:
# 添加Service Fabric核心路径、进程的排除项
Add-MpPreference -ExclusionPath "C:\Program Files\Microsoft Service Fabric"
Add-MpPreference -ExclusionPath "C:\ProgramData\SF" # 默认Service Fabric数据目录,自定义过的话要修改
Add-MpPreference -ExclusionProcess "FabricHost.exe"
Add-MpPreference -ExclusionProcess "Fabric.exe"
Add-MpPreference -ExclusionProcess "FabricGateway.exe"
  • 把脚本上传到Azure存储账户(可以开启公共访问或生成SAS令牌确保VMSS能访问),然后用Azure CLI部署:
az vmss extension set --resource-group <你的资源组名> --vmss-name <你的VMSS名> --name CustomScriptExtension --publisher Microsoft.Compute --settings '{"fileUris": ["<脚本的存储URL>"], "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File Add-DefenderExclusions.ps1"}'

执行后,所有VMSS实例会自动下载并运行脚本完成配置。

2. 通过Service Fabric应用包自动配置(推荐)

既然是部署Service Fabric应用,你可以把排除项配置整合到应用部署流程里,让应用部署到每个节点时自动执行:

  • 在应用的ApplicationManifest.xml中添加启动脚本配置:
<ServiceManifestImport>
  <ServiceManifestRef ServiceManifestName="YourServicePackage" ServiceManifestVersion="1.0.0" />
  <SetupEntryPoint>
    <ExeHost>
      <Program>Setup-DefenderExclusions.ps1</Program>
      <WorkingFolder>CodePackage</WorkingFolder>
      <ConsoleRedirection FileRetentionCount="3" FileMaxSizeInKb="1024" />
    </ExeHost>
  </SetupEntryPoint>
</ServiceManifestImport>
  • 在服务包的CodePackage目录下添加Setup-DefenderExclusions.ps1,内容就是前面的Defender排除项PowerShell命令。这样每次应用部署或节点扩容时,都会自动执行脚本配置排除项。

3. 使用Azure Policy长期管控

如果需要确保所有现有和未来扩容的VMSS实例都自动继承排除项配置,可以用Azure Policy:

  • 创建一个自定义DeployIfNotExists类型的Policy,规则里指定自动为VMSS实例部署自定义脚本扩展,或者直接执行PowerShell命令配置Defender排除项。
  • 这种方式的优势是一劳永逸,后续VMSS新增实例时,Policy会自动触发配置,不用手动干预。

4. Azure Automation Runbook批量执行

如果你有Azure Automation账户,可以创建Runbook遍历所有VMSS实例,远程执行配置命令:

  • Runbook示例代码片段:
$resourceGroup = "<你的资源组名>"
$vmssName = "<你的VMSS名>"

# 获取VMSS所有实例
$vmssInstances = Get-AzVmssVM -ResourceGroupName $resourceGroup -VMScaleSetName $vmssName

foreach ($instance in $vmssInstances) {
    Invoke-AzVMRunCommand -ResourceGroupName $resourceGroup -Name $instance.Name -CommandId 'RunPowerShellScript' -ScriptString @"
Add-MpPreference -ExclusionPath "C:\Program Files\Microsoft Service Fabric"
Add-MpPreference -ExclusionProcess "FabricHost.exe"
"@
}

这种方式适合一次性批量配置,或者定期检查并修复排除项。

注意事项

添加排除项时,一定要覆盖Service Fabric的核心路径、数据目录和关键进程,避免漏配导致防护仍占用过高资源。

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

火山引擎 最新活动