У меня есть код PowerShell для управления правилами брандмауэра Windows, если установлена версия PowerShell 4+. Но мне нужно выполнить эти команды на серверах Windows с PowerShell 2. Все, что я прочитал, указывает на то, что я должен использовать Netshadvfirewall
, но мне не удалось найти правильный способ использовать его для нужных мне целей.
Ниже приведены 5 команд PowerShell, которые мне нужно преобразовать в команды PowerShell 2:
Get-NetFirewallRule
Get-NetFirewallAddressFilter
Get-NetFirewallPortFilter
Remove-NetFirewallRule
New-NetFirewallRule
Текущий код, который работает в PowerShell 4 +
$RuleName = 'Test Rule Name'
$IPAddress = '1.1.1.1'
$Port = 127
$LocLocation = 'C:\temp\Firewall.log'
$FireWallRule = (Get-NetFirewallRule -DisplayName "$RuleName" -ErrorAction SilentlyContinue)
if ($null -ne $FireWallRule) {
$FirewallRuleIP = ($FirewallRule | Get-NetFirewallAddressFilter).RemoteAddress
$FirewallRulePort = ($FirewallRule | Get-NetFirewallPortFilter).LocalPort
# Is the existing firewall rule correctly configured?
if ($FirewallRule.Direction -eq "Inbound" -and $FirewallRule.Action -eq "Allow" -and $FirewallRule.Enabled -eq "true" -and $FirewallRuleIP -eq $IPAddress -and $FirewallRulePort -eq $Port) {
$Message = "Firewall rule $RuleName already exists and is configured correctly with: Direction:Inbound, Action:Allow, Protocol:TCP, RemoteAddress:$IPAddress, LocalPort:$Port"
}
else {
Remove-NetFirewallRule -DisplayName "$RuleName" | Out-Null
New-NetFirewallRule -DisplayName "$RuleName" -Direction Inbound -Action Allow -Protocol TCP -RemoteAddress $IPAddress -LocalPort $Port | Out-Null
$Message = "Firewall rule $RuleName was misconfigured. It was deleted and recreated with: Direction:Inbound, Action:Allow, Protocol:TCP, RemoteAddress:$IPAddress, LocalPort:$Port"
}
}