【发布时间】:2021-09-16 04:06:23
【问题描述】:
毫无疑问,回到另一个愚蠢的问题。我正在尝试为我创建的变量中存在的每个 IP 地址执行一个 for 循环。我可以创建逗号或空格分隔的字符串,但无论哪种方式,我都无法让 for 循环执行我想要的操作。
我希望将列表中的每个地址传递到此代码块中
az network application-gateway waf-policy custom-rule match-condition add `
--match-variables RemoteAddr `
--operator IPMatch `
--values <ADDRESS_FROM_STRING>
我正在根据这段脚本构建列表
$addressList = Invoke-WebRequest "https://rules.emergingthreats.net/blockrules/compromised-ips.txt" -UseBasicParsing | Select-Object -ExpandProperty Content
$threatList=(-split $addressList -join ',')
这是我对此的微弱尝试,我认为这是错误的,但我对 foreach 和 foreach-object 的理解可能超出了我的深度。
$threatlist | ForEach-Object -process (az network application-gateway waf-policy custom-rule match-condition add `
--match-variables RemoteAddr `
--operator IPMatch `
--values $_)
任何帮助将不胜感激,谢谢大家!
【问题讨论】:
-
使用 {} 代替 ()
-
@MathiasR.Jessen 你在跟踪我吗?哈!使用您的建议,我收到以下错误,这就是我尝试使用 for 循环开始的原因。程序“az.cmd”运行失败:文件名或扩展名太长在第 1 行
-
$threatlist 不会是一个数组,所以 foreach 循环只会迭代一次。使用 $addressList.Split('这里是你的分隔符')
标签: azure powershell loops foreach