Warm tip: This article is reproduced from serverfault.com, please click

range-从文本文件向PowerShell脚本传递多个值

(range - Passing multiple values to PowerShell script from text file)

发布于 2020-12-12 10:51:10

我对PowerShell还是很陌生,所以请不要怪我,我完全处于黑暗之中……我有一个包含数百个IP范围的文本文件。我要实现的是创建一个防火墙规则,该规则应阻止所有到这些IP范围的出站连接。

我想要一个防火墙规则,所有IP范围都在防火墙规则的“远程IP地址->此范围”下。

以下脚本可以运行,但已创建了500个防火墙规则,每个IP范围一个。我希望所有IP范围都在一个规则中。

我应该使用什么命令代替New-NetFirewallRule

$Contents = Get-Content "C:\Temp\fb.txt"
foreach($Line in $Contents) {
    New-NetFirewallRule -DisplayName "Block FB" -Direction Outbound -LocalPort Any -Protocol TCP -action Block -RemoteAddress $Line
}

我也尝试过Set-NetFirewallRule,但是它所做的只是替换IP范围,而不是添加新范围。

Questioner
Daniel D.
Viewed
11
OwlsSleeping 2020-12-12 19:35:13

文档中,RemoteAddress接受字符串数组作为输入(由[-RemoteAddress <String []>]中的[]指示)。

这是否可以满足你的需求?与你的问题无关-我对参数进行了喷涂,因为它们对我来说大多不在屏幕上。

$FirewallParams = @{
    DisplayName = 'Block FB'
    Direction = 'Outbound'
    LocalPort = 'Any'
    Protocol = 'TCP'
    Action = 'Block'
    RemoteAddress = (Get-Content 'C:\Temp\fb.txt')
}

New-NetFirewallRule @FirewallParams