使用powershell查找/列出Azure中未使用的存储帐户

4sup72z8  于 2023-02-05  发布在  Shell
关注(0)|答案(2)|浏览(185)

正在尝试使用powershell获取Azure中的未使用/不活动存储帐户列表。下面是我的脚本,我正在尝试它将提供存储帐户名称和Azure存储帐户的最后修改日期,但我只需要列出未使用的存储帐户名称,而不是所有存储帐户,对于这一些条件/过滤器我需要提供实现相同的。请协助我解决这个问题。谢谢提前
它会将结果输出到一个表中,详细列出Azure存储帐户的名称和上次修改日期。

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

  # Get storage account key
     $storageAccountKey = (Get-AzStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName).Value[0]
    
     # Create storage account context using above key
     $context = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
    
     # Get the last modified date
     $lastModified = Get-AzStorageContainer -Context $context | Sort-Object -Property @{Expression = {$_.LastModified.DateTime}} | Select-Object -Last 1 -ExpandProperty LastModified

             # Collect the information to output to a table when the for loop has completed
             New-Object psobject -Property @{
                 Name = $storageAccountName;
                 LastModified = $lastModified.DateTime;
                 ResourceGroupName = $resourceGroupName
             }

 }
} | Format-Table Name, LastModified, ResourceGroupName -autosize
b1uwtaje

b1uwtaje1#

我尝试在我的环境中重现相同的结果,结果如下:

通过使用相同的脚本,我获得了Azure存储帐户的存储帐户名称和上次修改日期。

为了使用PowerShell仅获取Azure中的未使用/非活动存储帐户,我修改了脚本,如下所示:
我同意@Niclas,您需要使用**get-date**命令。

& {
  foreach ($storageAccount in Get-AzStorageAccount) {
    $storageAccountName = $storageAccount.StorageAccountName
    $resourceGroupName = $storageAccount.ResourceGroupName
    $storageAccountKey = (Get-AzStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName).Value[0]
    $context = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
    $lastModified = Get-AzStorageContainer -Context $context | Sort-Object -Property @{Expression = {$_.LastModified.DateTime}} | Select-Object -Last 1 -ExpandProperty LastModified
    $unusedacc = (Get-Date).AddDays(-10)
    if ($lastModified.DateTime -lt $unusedacc) {
        New-Object psobject -Property @{
        Name = $storageAccountName;
        LastModified = $lastModified.DateTime;
        ResourceGroupName = $resourceGroupName
      }
    }
  }
} | Format-Table Name, LastModified, ResourceGroupName -autosize

:根据您的要求,您可以更改此行中的天数$unusedacc = (Get-Date).AddDays(-10)

如果没有未使用的存储帐户,则将返回如下空白结果:

vuv7lop3

vuv7lop32#


使用get-date
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-date
并使用Where-Object

# ADD THIS
 $lastModDate = (get-date).AddDays(-5).Date
 $lastMod = $lastModified | Where-Object { ($_.DateTime).Date -lt $lastModDate}
 
 # If $lastMod.DateTime is NOT empty, then:
 if ($lastMod.DateTime) { 
 
    # Write-Host "variable is NOT null " + $storageAccountName # For testing purpose
    # Collect the information to output to a table when the for loop has completed
    New-Object psobject -Property @{
        Name = $storageAccountName;
        LastModified = $lastMod.DateTime; # CHANGE THIS
        ResourceGroupName = $resourceGroupName
    }
 }

https://www.techielass.com/find-unused-storage-accounts-in-azure/
使用您的脚本:

使用我的更改:

相关问题