首页 > 解决方案 > 从文本文件将多个值传递给 PowerShell 脚本

问题描述

我对 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 范围,而不是添加新范围。

标签: powershellrangetext-filesip-addressfirewall

解决方案


文档中,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

推荐阅读