首页 > 解决方案 > 如何使用 PowerShell 逐行读取 txt/csv

问题描述

我有几个 txt/csv 文件,我试图将文件中的每一行循环输入到我的 API 命令中。

例如:server.txt - 第一个文件包含服务器和资源组server1, rg1 server2, rg2 server3, rg3等。

ips.txt - 另一个文件包含规则和 ipsrule1, startip1, endip1 rule2, startip2, endip2 rule3, startip3, endip3等。

问题是如何为 server.txt 中的每一行以及同一循环中的 ips.txt 设置 powershell?

我以前有过类似的东西,但它似乎效果不佳。有什么想法吗?

$list=Get-Content "servers.txt"

foreach ($data in $list) {
    $server_name, $rg = $data -split ',' -replace '^\s*|\s*$'


    Write-Host "Checking if SQL server belongs in subscription"
    $check=$(az sql server list -g $rg --query "[?name == '$server_name'].name" -o tsv)
    Write-Host $check


    # Get current rules and redirect output to file
    az sql server firewall-rule list --resource-group "$rg" --server "$server_name" --output table | Export-Csv -NoTypeInformation current-natrules.csv

    $new_rules=Get-Content "ips.txt"

    foreach ($data in $new_rules) {
        $rule_name, $start_ip, $end_ip = $data -split ',' -replace '^\s*|\s*$'

        # Create rule with new configs
        Write-Host "Assigning new firewall rules..."
        az sql server firewall-rule create --name "$rule_name" --server "$server_name" --resource-group "$rg" --start-ip-address "$start_ip" --end-ip-address "$end_ip" --output table
    }

    # Validating
    Write-Host "Printing new NAT rules to file..."
    az sql server firewall-rule list --resource-group "$rg" --server "$server_name" --output table | Export-Csv -NoTypeInformation new-natrules.csv
}

标签: azurepowershellloops

解决方案


推荐阅读