gpt4 book ai didi

powershell - 如何使用 Powershell 检查现有的防火墙规则

转载 作者:行者123 更新时间:2023-12-02 22:52:11 25 4
gpt4 key购买 nike

所以,我有这个脚本:

function Add-FirewallRule {
param(
$name,
$tcpPorts,
$appName = $null,
$serviceName = $null
)
$fw = New-Object -ComObject hnetcfg.fwpolicy2
$rule = New-Object -ComObject HNetCfg.FWRule

$rule.Name = $name
if ($appName -ne $null) { $rule.ApplicationName = $appName }
if ($serviceName -ne $null) { $rule.serviceName = $serviceName }
$rule.Protocol = 6 #NET_FW_IP_PROTOCOL_TCP
$rule.LocalPorts = $tcpPorts
$rule.Enabled = $true
$rule.Grouping = "@firewallapi.dll,-23255"
$rule.Profiles = 7 # all
$rule.Action = 1 # NET_FW_ACTION_ALLOW
$rule.EdgeTraversal = $false
if(*here*)
{
$fw.Rules.Add($rule)
}

}

并且我希望能够在 if() 中放入一些内容,以便在添加规则之前检查该规则是否已经存在。我对powershell不是很熟悉,所以对我放轻松:P

最佳答案

SDL 微服务的 PowerShell 防火墙示例
仅在不存在的情况下创建新的防火墙规则

$rules = Get-NetFirewallRule

$par = @{
DisplayName = ""
LocalPort = 80
Direction="Inbound"
Protocol ="TCP"
Action = "Allow"
}

$par.LocalPort = 8081
$par.DisplayName = "SDL Web 8 Stage Content Microservice on port $($par.LocalPort)"
if (-not $rules.DisplayName.Contains($par.DisplayName)) {New-NetFirewallRule @par}

$par.LocalPort = 8082
$par.DisplayName = "SDL Web 8 Stage Discovery Microservice on port $($par.LocalPort)"
if (-not $rules.DisplayName.Contains($par.DisplayName)) {New-NetFirewallRule @par"}

关于powershell - 如何使用 Powershell 检查现有的防火墙规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com