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

Azure Automation PowerShell执行Resolve-DnsName报存储不足问题

问题结论

Azure Automation 不需要单独分配运行时存储资源,你遇到的报错和存储配置遗漏无关,核心原因是Azure Automation默认沙箱环境的限制:

  1. Resolve-DnsName cmdlet 底层依赖Windows的DNS客户端服务(Dnscache),该服务在Azure Automation托管沙箱中默认被禁用、无启动权限,调用时触发的资源报错是服务调用失败抛出的误导性提示,不是实际存储空间不足。
  2. Azure Automation托管沙箱对每个Runbook分配有固定的运行时资源配额(约400MB内存、1GB临时存储),该配额是平台固定值,无法通过配置调整,和你绑定的Automation存储账户无关——绑定的存储账户仅用于存放Runbook资产、DSC配置、作业日志等持久化数据,不承载脚本运行时的进程资源。
可落地的解决方法
  • 替换Resolve-DnsName为不依赖Dnscache服务的查询方式,适配沙箱运行环境:
    • 常规域名解析(A/AAAA/CNAME场景)直接用.NET原生类实现,无额外依赖:
      # 查询www.bing.com的解析结果,自动返回CNAME别名和对应IP
      $dnsEntry = [System.Net.Dns]::GetHostEntry("www.bing.com")
      # 提取CNAME记录值
      $cname = $dnsEntry.Aliases | Select-Object -First 1
      
    • 需要查询MX/TXT等特殊记录类型时,直接调用沙箱内可执行的nslookup.exe工具,解析命令输出即可:
      # 指定查询CNAME类型记录
      $rawOutput = nslookup -type=CNAME www.bing.com 2>$null
      # 自行处理文本输出提取目标记录值
      
  • 如果你现有脚本体量较大,运行时总内存占用超过沙箱配额,或者需要完整兼容Resolve-DnsName的所有特性,可以将Runbook配置为在混合Runbook辅助角色上运行,脚本将直接在你自定义托管的服务器节点上执行,不受沙箱的服务限制和资源配额约束。

本地环境运行命令正常,是因为本地Windows默认启用Dnscache服务,且进程运行无沙箱层面的权限、资源限制,和脚本本身逻辑无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:54:19