使用 Powershell 列出所有 Azure 存储帐户和网络规则

Posted

技术标签:

【中文标题】使用 Powershell 列出所有 Azure 存储帐户和网络规则【英文标题】:Use Powershell List All Azure Storage Accounts & Network Rules 【发布时间】:2021-10-10 19:10:10 【问题描述】:

我在一个客户租户中有大约 50 个 Azure 存储帐户。我需要检查并更新存储帐户,以便网络访问仅限于特定的虚拟网络。一些存储帐户设置了网络限制,但大多数没有

我需要一种方法来选择所有存储帐户,然后为每个存储帐户列出适当的网络规则(如果有),而不是在 Azure 门户中手动选择所有存储帐户 . 存储帐户也位于不同的资源组中。我运行了一个基本命令来获取所有存储帐户的列表,但现在我希望显示应用于每个存储帐户的网络规则:

Get-AzureRMStorageAccount | Export-CSV C:\....
Get-AzureRmStorageAccountNetworkRuleSet  -ResourceGroupName "allRG's" -AccountName "allStorageAccounts"

我不确定如何发出 Get-AzureRmStorageAccountNetworkRuleSet 命令并让它选择每个存储帐户及其各自的资源组。任何帮助将不胜感激,谢谢!

【问题讨论】:

Get-AzureRMStorageAccount 的输出对象是一个PSStorageAccount 对象。这包括资源组名称和一组网络规则。这里似乎有什么问题?看起来它正在收集您想要的所有信息,而无需任何循环。 您说得对,我的描述缺少附加信息,我深表歉意。我更新了它,但我现在的问题是如何对每个存储帐户运行 Get-AzureRmStorageAccountNetworkRuleSet 命令以查看其网络/防火墙权限?该命令要求我输入一个资源组但有多个。 您还没有获得该信息吗? Get-AzureRmStorageAccount 表示它将网络规则集作为它返回的数据的一部分返回。 不,当我运行Get-AzureRmStorageAccount 时,我只获得存储帐户名称、资源组、位置、访问层和类似信息。它没有提供应用于每个存储帐户的网络规则,而这是我最终想要做的 【参考方案1】:

您可以使用以下 powershell 脚本获取订阅中存在的所有存储帐户,然后获取网络规则集属性。

Connect-AzAccount
$Result=@()
$Storageaccounts = Get-AzStorageAccount
$Storageaccounts | ForEach-Object 
$storageaccount = $_
Get-AzStorageAccountNetworkRuleSet -ResourceGroupName $storageaccount.ResourceGroupName -AccountName $storageaccount.StorageAccountName | ForEach-Object 
$Result += New-Object PSObject -property @ 
Account = $storageaccount.StorageAccountName
ResourceGroup = $storageaccount.ResourceGroupName
Bypass = $_.Bypass
Action = $_.DefaultAction
IPrules = $_.IpRules
Vnetrules = $_.VirtualNetworkRules
ResourceRules = $_.ResourceAccessRules



$Result | Select Account,ResourceGroup,Bypass,Action,IPrules,Vnetrules,ResourceRules

输出:

【讨论】:

以上是关于使用 Powershell 列出所有 Azure 存储帐户和网络规则的主要内容,如果未能解决你的问题,请参考以下文章

使用 Azure AZ Powershell Cmdlet 列出 Azure 安全中心策略状态

如何使用 powershell/Azure CLI 列出有权访问 Azure DevOps 项目存储库的用户?

使用 Powershell 从 Azure 存储子容器中删除所有文件

列出存储容器内容时获取 Azure 存储以返回 blob URL

通过带有 SAS 令牌的 Power Shell 列出 Azure Blob 容器中文件夹中的文件

powershell 列出Active Directory中使用的所有SPN