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

如何通过PowerShell从CSV循环传递多参数执行脚本?

解决方案

首先你的CSV文件没有表头行,所以使用Import-Csv时需要手动指定表头,才能正确提取每列对应的值。以下是完整的实现代码:

# 导入CSV并指定表头:设备名、资源组、订阅信息
$servers = Import-Csv 'C:\arun.servers.csv' -Header "DeviceName", "ResourceGroup", "Subscription"

# 循环遍历每一行数据
foreach ($server in $servers) {
    # 提取当前行的三个参数
    $device = $server.DeviceName
    $rg = $server.ResourceGroup
    $sub = $server.Subscription

    # 执行脚本,将参数以逗号分隔传递
    & .\script.ps1 "$device,$rg,$sub"

    # 若你的脚本支持独立传参(更符合PowerShell最佳实践),推荐用这种方式:
    # & .\script.ps1 -DeviceName $device -ResourceGroup $rg -Subscription $sub
}

关键说明:

  • 用-Header参数为无表头的CSV自定义列名,确保每列数据能被准确映射到变量
  • PowerShell中调用外部脚本/命令使用&操作符,替代你提到的exec
  • 如果脚本设计为接收单个逗号分隔的字符串参数,用第一种传参方式;若脚本定义了独立的命名参数,优先选择第二种方式,可读性和可维护性更好

额外优化(可选):

如果需要过滤掉参数不全的无效行,可在循环内添加校验逻辑:

foreach ($server in $servers) {
    if (-not $server.DeviceName -or -not $server.ResourceGroup -or -not $server.Subscription) {
        Write-Warning "跳过无效行:缺少必要参数"
        continue
    }
    & .\script.ps1 "$($server.DeviceName),$($server.ResourceGroup),$($server.Subscription)"
}

内容的提问来源于stack exchange,提问作者Arun C O

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:32:07