powershell 存储帐户vNet详细信息

k2fxgqgv  于 2022-11-10  发布在  Shell
关注(0)|答案(1)|浏览(157)

我正在尝试创建一份报告,以查找所有存储帐户及其关联的vNet详细信息。

& {
foreach ($storageAccount in Get-AzStorageAccount) {
$storageAccountName = $storageAccount.StorageAccountName
$resourceGroupName = $storageAccount.ResourceGroupName  

 $context = (Get-AzStorageAccount -StorageAccountName $storageAccountName -ResourceGroupName $resourceGroupName).NetworkRuleSet.VirtualNetworkRules.VirtualNetworkResourceId

 $splitarray = $context.Split('/')
 $vnetid = $splitarray[8]
 $subscriptionid = $splitarray[2]

   New-Object psobject -Property @{
       Name = $storageAccountName;
       Context = $vnetid;
       ResourceGroupName = $resourceGroupName
       Subscriptionid = $subscriptionid
   }

 }
} | Format-Table Name, Context, subscriptionid, ResourceGroupName

我目前得到以下输出:storage account vnet report
正如您从输出中看到的,没有为存储帐户正确获取vNet名称。
存储帐户testfnapp2oct16连接了vNet Testfnvnet,这是正确的。存储帐户unz2versvaultea、cs1f7b27d61e31e、win10guestDiag954未连接任何vNet,但会重复‘testfnvnet’,直到不同存储帐户的值更改。
存储帐户testfnapp9eb7有两个vnet,但只显示了testvnet1,并且为下一个存储帐户重复了值‘testvnet1’。
任何帮助都是非常感激的。

vjhs03f7

vjhs03f71#

  • 我试图在我的环境中复制同样的东西,这让我成功了*。

我已经创建了样本存储帐户获取与vNet和没有附加与vNet时,我尝试,您的代码我得到相同的错误如下。

要解决此问题,请使用我在以下代码中更改的条件来正确执行此问题的解决方案。

& {
foreach ($storageAccount in Get-AzStorageAccount) {
$storageAccountName = $storageAccount.StorageAccountName
$resourceGroupName = $storageAccount.ResourceGroupName
$context = (Get-AzStorageAccount -StorageAccountName $storageAccountName -ResourceGroupName $resourceGroupName).NetworkRuleSet.VirtualNetworkRules.VirtualNetworkResourceId
$ErrorActionPreference = ‘SilentlyContinue’
      if ($context -eq $null){
      New-Object psobject -Property @{
       Name = $storageAccountName;
       Context = "Empty" ;
       ResourceGroupName = $resourceGroupName
       Subscriptionid =  $subscriptionid
   }
      }
      else {
         $splitarray = $context.Split('/')
$vnetid = $splitarray[8]
$subscriptionid = $splitarray[2]
  New-Object psobject -Property @{
       Name = $storageAccountName;
       Context = $vnetid;
       ResourceGroupName = $resourceGroupName
       Subscriptionid = $subscriptionid
   }
}
}
} | Format-Table Name, Context, subscriptionid, ResourceGroupName
  • 结果*:

现在,无论哪个vnet没有进入我的存储帐户,它都会显示为空,如下所示。

相关问题