Добавление правил брандмауэра через PowerShell из данных в Excel [closed]

Мне нужно создать новые правила брандмауэра из длинного списка из файла Excel. Я собираюсь использовать для этого модуль PowerShell и ImportExcel. Учитывая, что я новичок в Windows и PowerShell, мне нужна помощь в том, как это сделать.

Первый столбец из excel представляет IP и порты, мне нужно заблокировать и добавить как правило брандмауэра. Мне нужно получить данные из «Строки 2» и до конца данных Excel.

Вот пример Excel:

Excel-RowIpAndPortsПротокол
235.180.0.0/16TCP
312.13.14.1/8883 433TCP
41.2.3.4/80HTTP

Мне также нужно сделать -DisplayName & -Name в New-NetFirewallRule команду динамической, чтобы позже я мог найти правило брандмауэра (пример кода).

Команда PowerShell, которую я буду использовать для создания правила брандмауэра:

New-NetFirewallRule -DisplayName «Блокировать Wi-Fi {Excel-Row}«-Name» Блокировать Wi-Fi {Excel-Row}«-Направление входящего -InterfaceType Wireless -Action Block -RemoteAddress {Часть перед / IpAndPorts} -LocalPort {Часть после / IpAndPorts} -Протокол {Протокол}

Пример команды после получения данных из строки 3 из Excel:

New-NetFirewallRule -DisplayName «Блокировать Wi-Fi 3«-Name» Блокировать Wi-Fi 3«-Направление входящего -InterfaceType Wireless -Action Block -RemoteAddress 12.13.14.1 -LocalPort 8883 433 -Протокол TCP

Вот код, который мне удалось написать:

# ---------------------------------------
# Here we should get data from excel
# and prepare variables

$FirewallList = Import-Excel C:Templist.xlsx
$All = $FirewallList.IpAndPorts
$AllProtocols = $FirewallList.Protocol

# ---------------------------------------
# Here it should be number of excel row, 
# starting from 2 and incementing until last data in row
# Don't know how to do that

$Index = "1"

# ---------------------------------------
# Split IpAndPorts data to get IP and PORT

$Ip = $All.Split("/")[0]
$Port = $All.Split("/")[1]

# ---------------------------------------
# Here we should populate parameters

#$Params = @{ 
#    "DisplayName" = 'Block-WiFi-' + $Index  
#    "Name" = 'Block-WiFi-' + $Index 
#    "Direction" = 'Inbound' 
#    "InterfaceType" = 'Wireless'
#    "Action" = 'Block'
#    "RemoteAddress" = $Ip
#    "LocalPort" = $Port
#    "Protocol" = $AllProtocols
#}

# Here we should start the command
# New-NetFirewallRule @Params

# ---------------------------------------
# Test how the command will be assembled 
# based on data from excel

$Test = New-Object PSObject -Property @{
    DisplayName = "Block-WiFi-" + $Index  
    Name = "Block-WiFi-" + $Index 
    Direction = 'Inbound' 
    InterfaceType="Wireless"
    Action = 'Block'
    RemoteAddress = $Ip
    LocalPort = $Port
    Protocol = $AllProtocols
}

Write-Host "New-NetFirewallRule
-DisplayName $($Test.DisplayName)
-Name $($Test.Name)
-Direction $($Test.Direction) 
-InterfaceType $($Test.InterfaceType)
-Action $($Test.Action)
-RemoteAddress $($Test.RemoteAddress)
-LocalPort $($Test.LocalPort)
-Protocol $($Test.Protocol)
"
# Test results. Just printing
Write-Host "------------- PRINT FROM EXCEL ----------------"
$All
$AllProtocols
Write-Host "---------------------------------------------"
$Ip
$Port

Как заставить цикл брать каждое значение из Excel, добавлять его в $ Params и запускать команду?

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *