Powershell 脚本抛出错误时添加 AzKeyVaultNetworkRule

Add-AzKeyVaultNetworkRule on Powershell script throwing error

我需要使用 powershell 将 Azure Function-App 的出站 IP 添加到要列入白名单的 Azure KeyVault 防火墙规则,以便在管道上执行。我的脚本是:

param(
    [Parameter()]
    [String]$resourcegrp,
    [String]$funcname,
    [String]$kv
)
$functionApp = Get-AzFunctionApp -ResourceGroupName $resourcegrp -Name $funcname


Add-AzKeyVaultNetworkRule -VaultName $kv -ResourceGroupName $resourcegrp `
    -IpAddressRange ($functionApp.PossibleOutboundIPAddress).Trim()

Update-AzKeyVaultNetworkRuleSet -VaultName $kv -ResourceGroupName $resourcegrp `
    -DefaultAction Deny -Bypass AzureServices `
    -IpAddressRange ($functionApp.PossibleOutboundIPAddress).Trim()

以上给出了以下错误: 就像我在下面的 powershell 提示符下做同样的事情一样,它工作正常。

谁能指出我的 PS1 文件有什么问题,或者用 PowerShell 脚本实现相同问题的更好方法。

这是因为 属性 $functionApp.PossibleOutboundIPAddress 是单个字符串

$functions[0].PossibleOutboundIPAddress | gm

   TypeName: System.String

但是Add-AzKeyVaultNetworkRule需要一个字符串数组

Get-Help Add-AzKeyVaultNetworkRule -Parameter ipaddressrange

-IpAddressRange <System.String[]>
    Specifies allowed network IP address range of network rule.

您应该能够通过在 , 分隔符

上拆分 functionApp 的值来完成这项工作
$addAzKeyVaultNetworkRuleSplat = @{
    VaultName         = $kv
    ResourceGroupName = $resourcegrp
    IpAddressRange    = $functionApp.PossibleOutboundIPAddress -split ','
}

Add-AzKeyVaultNetworkRule @addAzKeyVaultNetworkRuleSplat