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

如何在PowerShell中遍历CSV匹配列名并创建AzSql防火墙规则

解决PowerShell遍历CSV创建Azure SQL防火墙规则的问题

问题根源:错误使用-contains运算符

你用-contains判断字符串是否包含子串是错误的。-contains是集合运算符,用于检查数组这类集合是否包含某个完整元素,而非判断字符串是否包含子串。比如'Start IPv4 address' -contains 'Start'会返回False,因为它在寻找与'Start'完全匹配的元素,而不是包含关系。

正确的字符串包含判断方式

要判断字符串是否包含指定子串,可选用以下三种方式:

  • 通配符匹配:$column.Name -like '*Start*'(*代表任意长度的字符)
  • 字符串内置方法:$column.Name.Contains('Start')(默认区分大小写,忽略大小写可改用$column.Name.IndexOf('Start', [StringComparison]::OrdinalIgnoreCase) -ge 0)
  • 正则匹配:$column.Name -match 'Start'

简化代码:直接访问CSV列名

其实无需遍历所有属性,Import-Csv会自动将CSV每行转换为对象,对象属性就是CSV的列名(注意列名含空格,需用引号包裹访问)。

完整工作代码

# 导入目标CSV文件
$csv = Import-Csv -Path "C:\Pathtofile"

# 遍历CSV每一行数据
foreach ($line in $csv) {
    # 提取各字段值,列名含空格需用引号包裹
    $ruleName = $line.'Name/desc'
    $startIp = $line.'Start IPv4 address'
    $endIp = $line.'End IPv4 Address'

    # 执行Azure SQL防火墙规则创建命令,替换为你的资源组和服务器名称
    New-AzSqlServerFirewallRule -ResourceGroupName "ResourceGroup01" `
                                -ServerName "Server01" `
                                -FirewallRuleName $ruleName `
                                -StartIpAddress $startIp `
                                -EndIpAddress $endIp
}

额外优化:添加错误处理

如果需要捕获命令执行异常,可加入try/catch块:

foreach ($line in $csv) {
    try {
        $ruleName = $line.'Name/desc'
        $startIp = $line.'Start IPv4 address'
        $endIp = $line.'End IPv4 Address'

        Write-Host "正在创建规则: $ruleName"
        New-AzSqlServerFirewallRule -ResourceGroupName "ResourceGroup01" `
                                    -ServerName "Server01" `
                                    -FirewallRuleName $ruleName `
                                    -StartIpAddress $startIp `
                                    -EndIpAddress $endIp `
                                    -ErrorAction Stop
        Write-Host "规则 $ruleName 创建成功"
    }
    catch {
        Write-Error "创建规则 $ruleName 失败: $_"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:07:09