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

PowerShell脚本路径问题:跨路径执行Azure策略部署失败

解决Azure策略部署脚本跨目录执行的路径错误问题

错误原因

  • 脚本中硬编码的路径未考虑执行目录变化,当从非脚本所在目录运行时,PowerShell会基于当前工作目录解析路径,导致找不到policy.json文件
  • 当New-AzPolicyDefinition无法定位到指定文件时,会误将路径字符串当作JSON内容解析,从而抛出"Unexpected character encountered while parsing value"的错误

解决方案

使用PowerShell内置变量$PSScriptRoot获取脚本所在的绝对目录,动态拼接策略文件路径,确保无论从哪个目录执行脚本,都能准确定位到目标文件。

修改后的脚本:

$managementGroup = "mg_sandbox"
# 获取当前脚本所在的绝对目录
$scriptDirectory = $PSScriptRoot
# 安全拼接策略文件的完整路径
$policyFilePath = Join-Path -Path $scriptDirectory -ChildPath "deploy_azure_monitor_agent_extension_for_windows_VMs/policy.json"

New-AzPolicyDefinition -Name 'deploy_azure_monitor_agent_extension_for_windows_VMs' -ManagementGroup $managementGroup -Policy $policyFilePath

补充说明

  • $PSScriptRoot是PowerShell专属自动变量,仅在脚本文件中生效,会返回脚本所在的绝对路径,不受当前执行目录影响
  • Join-Path会自动适配不同环境的路径分隔符(Cloud Shell的Linux环境下会使用/),避免手动拼接路径出现格式错误
  • 若偏好硬编码绝对路径,需填写完整路径:/home/sokr/clouddrive/deploy_azure_monitor_agent_extension_for_windows_VMs/policy.json,但这种方式灵活性差,脚本移动后需手动修改路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:42:44