5

ポート 5555 を開く PowerShell スクリプトがありますが、すべて (プライベート、パブリック、ドメイン) にしたい場合は、デフォルトでプロファイル = プライベートになります。これを実現するためにスクリプトを変更するにはどうすればよいですか?

$port = New-Object -ComObject HNetCfg.FWOpenPort
$port.Port = 5555
$port.Name = 'MyPort'
$port.Enabled = $true

$fwMgr = New-Object -ComObject HNetCfg.FwMgr
$profile = $fwMgr.LocalPolicy.CurrentProfile
$profile.GloballyOpenPorts.Add($port)

$port = New-Object -ComObject HNetCfg.FWOpenPort
$port.Port = 6521
$port.Name = 'ArkleSQL'
$port.Enabled = $true

$fwMgr = New-Object -ComObject HNetCfg.FwMgr
$profile = $fwMgr.LocalPolicy.CurrentProfile
$profile.GloballyOpenPorts.Add($port)
4

2 に答える 2

2

ファイアウォール管理用の COM オブジェクトには 2 つの値があります。0 はドメイン ネットワークを表し、1 は標準ネットワークを表します。(この API では) このパブリック プロファイルとプライベート プロファイルの違いはないようです。

の最後のセクションを置き換えることができます

$fwMgr = New-Object -ComObject HNetCfg.FwMgr
$profile = $fwMgr.LocalPolicy.CurrentProfile
$profile.GloballyOpenPorts.Add($port)

$Profiles = @{
    NET_FW_PROFILE_DOMAIN = 0
    NET_FW_PROFILE_STANDARD = 1
}

$fwMgr = New-Object -ComObject HNetCfg.FwMgr

$profile.GloballyOpenPorts.Add($port)
foreach ($ProfileKey in $Profiles.Keys)
{
    $Profile = $fwMgr.LocalPolicy.GetProfileByType($profiles[$ProfileKey])
    $Profile.GloballyOpenPorts.Add($Port)
}
于 2012-10-01T15:02:46.610 に答える