新しいファイアウォール ルールを使用netsh advfirewall firewall add rule
または作成できることはわかっています。wf.msc
しかし、この方法でルールを作成すると、グループ名がないため、同時に複数のルールを管理できません。
一部のファイアウォール ルールにgroupNameを指定する方法はありますか?
新しいファイアウォール ルールを使用netsh advfirewall firewall add rule
または作成できることはわかっています。wf.msc
しかし、この方法でルールを作成すると、グループ名がないため、同時に複数のルールを管理できません。
一部のファイアウォール ルールにgroupNameを指定する方法はありますか?
わかった!私は今それをどのようにすべきかを知っています:)
使用してPowerShell
、WMI COM-Objects
私はやりたいことができます!
これは、リモート ps1
に接続できるようにファイアウォール ルールを追加するために作成したスクリプトです。SQL Server
function isFirewallPortOpen {
param( [int] $port )
$fw = New-Object -ComObject hnetcfg.fwpolicy2
if ($fw.Rules | Where {$_.LocalPorts -eq $port }) {
return [bool]$true
} else {
return [bool]$false
}
}
function existsFirewallRule {
param( [string] $name )
$fw = New-Object -ComObject hnetcfg.fwpolicy2
if ($fw.Rules | Where { $_.Name -eq $name }) {
return [bool]$true
} else {
return [bool]$false
}
}
function addFirewallRule {
param(
[string] $name,
[int] $port,
[int] $protocol
)
$fw = New-Object -ComObject hnetcfg.fwpolicy2
if (isFirewallPortOpen $port -or existsFirewallRule $name) {
Write-Host -ForegroundColor:Red "**Rule Already Exists or Port Already Open."
} else {
$rule = New-Object -ComObject HNetCfg.FWRule
$rule.Name = $name
$rule.Protocol = $protocol # 6=NET_FW_IP_PROTOCOL_TCP and 17=NET_FW_IP_PROTOCOL_UDP
$rule.LocalPorts = $port
$rule.Enabled = $true
$rule.Grouping = "SQL Server"
$rule.Profiles = 7 # all
$rule.Action = 1 # NET_FW_ACTION_ALLOW
$rule.EdgeTraversal = $false
$fw.Rules.Add($rule)
Write-Host -ForegroundColor:Blue "A rule named '$name' has been added to Windows' Firewall."
}
}
addFirewallRule -name:"Transact SQL Debugger" -port:135 -protocol:6
addFirewallRule -name:"SQL Traffic" -port:1433 -protocol:6
addFirewallRule -name:"SQL Browser Traffic" -port:1434 -protocol:17
addFirewallRule -name:"SQL Analytics Traffic" -port:2383 -protocol:6
addFirewallRule -name:"SQL Broker Traffic" -port:4022 -protocol:6
$fw= New-Object -ComObject hnetcfg.fwpolicy2
$fw.rules | ? {$_.name -like "*sql*"} | ft name,grouping
$fw.rules | ? {$_.name -like "*sql*"} | % {$gn="_mssqlservices";$_.grouping = $gn}
$fw.rules | ? {$_.name -like "*sql*"} | ft name,grouping
$rule = Get-NetFirewallRule -Name 'nameme'; $rule.Group = 'nameme'; $rule | Set-NetFirewallRule;
netsh advfirewall firewall show rule name=nameme
netsh advfirewall set allprofiles state on
netsh advfirewall set allgroups on
netsh advfirewall firewall add rule name="nameme" dir=out action=Allow
netsh advfirewall export "C:\temp\WFconfiguration.wfw"
netsh advfirewall import "C:\temp\WFconfiguration.wfw"
注: 最初に Windows ファイアウォールでルール名を作成してnameme
から、名前を run PowerShell 管理者に変更する必要があります。
グループ名 = 任意の場合
Windows ファイアウォールの管理がこれまで以上に簡単になりました ダウンロードするだけです