Чтение из текстового файла и добавление нескольких правил брандмауэра - PullRequest
0 голосов
/ 16 мая 2018

Я создал скрипт, который добавляет новое правило брандмауэра, только если его еще нет.Он проверяет имя правила брандмауэра, а также направление трафика.Если существует одно и то же имя правила брандмауэра, а также входящее или исходящее соединение, оно не будет создавать правило.Он читает из текстового файла на локальном компьютере.

Я пытаюсь добавить в этот скрипт несколько правил брандмауэра, прочитав текстовый файл с несколькими именами серверов.

Например, я пытаюсь добавить 4 разных правила брандмауэра (2 входящих и 2 исходящих) на один сервер, но не знаю, как это сделать.

Имена правил брандмауэра

  • k1 (TCP-In)
  • k2 (TCP-Out)
  • k3 (TCP-In)
  • k4 (TCP-Out)

Код:

$Computers = get-Content -Path "C:\temp\kofaxcomputers.txt"            
Write-host "Checking firewall rules now...." -ForegroundColor Cyan

Invoke-Command -ComputerName $Computers {
    $firewallRuleName = "k1 (TCP- In)"

    if (Get-NetFirewallRule | ? {$_.DisplayName -eq $firewallRuleName -and ($_.Direction -eq 'Inbound' -or $_.Direction -eq 'Outbound')}) {
        Write-host "Firewall rule for '$firewallRuleName' already exists, not creating new rule" -ForegroundColor red
    }
    else {
        Write-host "Firewall rule for '$firewallRuleName' does not already exist, creating new rule now..."
        New-NetFirewallRule -DisplayName $firewallRuleName -Direction Inbound -RemoteAddress Any -Action Allow -Protocol TCP -LocalPort 2424

        Write-host "Firewall rule for '$firewallRuleName' created successfully" -ForegroundColor Green
    }
}

1 Ответ

0 голосов
/ 16 мая 2018

Если вы создаете CSV, который содержит необходимые вам правила, вы можете использовать Import-Csv и цикл foreach для создания правил, содержащихся в csv.

Пример kofaxrules.csv содержимое:

"Name", "Direction", "Port"
"k1 (TCP- In)", "Inbound", "2424"
"k2 (TCP- Out)", "Outbound", "1212"
"k3 (TCP- In)", "Inbound", "3434"
"k4 (TCP- Out)", "Outbound", "6565"

Код:

$Computers = Get-Content -Path "C:\temp\kofaxcomputers.txt"
$Rules = Import-Csv -Path "C:\temp\kofaxrules.csv"

Write-Host "Checking firewall rules now...." -ForegroundColor Cyan

Invoke-Command -ComputerName $Computers -ScriptBlock {
    foreach ($Rule in $Using:Rules) {
        if (Get-NetFirewallRule -DisplayName $Rule.Name -ErrorAction SilentlyContinue) {
            Write-Host "Firewall rule already exists $($Rule.Name)" -ForegroundColor Green
        }
        else {
            Write-Host "Creating Firewall rule: $($Rule.Name)"
            New-NetFirewallRule -DisplayName $Rule.Name -Direction $Rule.Direction -RemoteAddress Any -Action Allow -Protocol TCP -LocalPort $Rule.Port
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...