gpt4 book ai didi

powershell - 根据数据类型使用获取内容

转载 作者:行者123 更新时间:2023-12-03 12:58:14 24 4
gpt4 key购买 nike

我有一个 PowerShell 脚本,可根据文件中的 IP 将 Azure Web 应用的 IP 列入白名单:

$ResourceGroupName = 'RG'
$WebAppName = 'WebApp'
$WhitelistFilePath = 'C:\IPs.txt'


$IPs = Get-Content $WhitelistFilePath
$name = 600
$priority = 600

foreach($IP in $IPs)
{
Add-AzWebAppAccessRestrictionRule -ResourceGroupName $ResourceGroupName -WebAppName $WebAppName -Name "IP-$name" -Priority "$priority" -Action Allow -IpAddress "$IP/24"
$name ++
$priority ++
}

该脚本可以很好地处理简单的 IP 列表。 C:\IPs.txt:

10.0.0.0
100.0.0.0

获取:

Add-AzWebAppAccessRestrictionRule -ResourceGroupName RG -WebAppName WebApp -Name IP-600 -Priority 600 -Action Allow -IpAddress 10.0.0.0/24
Add-AzWebAppAccessRestrictionRule -ResourceGroupName RG -WebAppName WebApp -Name IP-601 -Priority 601 -Action Allow -IpAddress 100.0.0.0/24

但是,我还想添加这些 IP 的名称,因此 C:\IPs.txt 如下所示:

Ben's IP
10.0.0.0
John's IP
100.0.0.0

如何编辑我的脚本以便收到:

Add-AzWebAppAccessRestrictionRule -ResourceGroupName RG -WebAppName WebApp -Name "Ben's IP" -Priority 600 -Action Allow -IpAddress 10.0.0.0/24
Add-AzWebAppAccessRestrictionRule -ResourceGroupName RG -WebAppName WebApp -Name "John's IP" -Priority 601 -Action Allow -IpAddress 100.0.0.0/24

而不是我现在得到的:

Add-AzWebAppAccessRestrictionRule -ResourceGroupName RG -WebAppName WebApp -Name IP-600 -Priority 600 -Action Allow -IpAddress Ben's IP/24
Add-AzWebAppAccessRestrictionRule -ResourceGroupName RG -WebAppName WebApp -Name IP-601 -Priority 601 -Action Allow -IpAddress 10.0.0.0/24
Add-AzWebAppAccessRestrictionRule -ResourceGroupName RG -WebAppName WebApp -Name IP-602 -Priority 602 -Action Allow -IpAddress John's IP/24
Add-AzWebAppAccessRestrictionRule -ResourceGroupName RG -WebAppName WebApp -Name IP-603 -Priority 603 -Action Allow -IpAddress 100.0.0.0/24

最佳答案

Bassie's helpful answer展示了一个带有 for 循环的可行解决方案。

也许更简单的方法是使用 Get-Content-ReadCount 参数用于分批读取输入文件的行,在本例中一次读取 2 行:

# Create a sample 'IPs.txt' file.
@'
Ben's IP
10.0.0.0
John's IP
100.0.0.0
'@ > IPs.txt

$priority = 600
Get-Content -ReadCount 2 IPs.txt | ForEach-Object {

# Split the 2-element array of lines into its constituent lines.
$name, $ip = $_

# Call Add-AzWebAppAccessRestrictionRule with arguments
# based on the variables.
# -WhatIf previews the command; remove it to actually run the command.
Add-AzWebAppAccessRestrictionRule -WhatIf `
-ResourceGroupName RG -WebAppName WebApp `
-Name $name -Priority ($priority++) -Action Allow -IpAddress $ip/24
}

关于powershell - 根据数据类型使用获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60823146/

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