【发布时间】:2020-06-24 12:31:49
【问题描述】:
我正在编写一个 Powershell 脚本,用于查找所有容器“LastModifiedDate”小于 6 个月的所有 Azure 存储帐户。如果只有一个容器对此语句为 FALSE,则应忽略 ASA。
实现此目的的一种方法是获取一个存储帐户的“LastModifiedDate”数组,然后将其与 (Get-Date).AddDays(-180) 进行比较。问题是如何正确地做到这一点?如果数组中只有一个值为 FALSE,则应忽略它。
我使用 BREAK 运算符实现了这一点,但我认为这不是一个好的解决方案。谁能帮我解决这个问题?
function check_stores {
$stores = Get-AzureRmResource -ODataQuery "`$filter=resourcetype eq 'Microsoft.Storage/storageAccounts'" $x = (Get-Date).AddDays(-180)
foreach($store in $stores){
$storename = $store.Name
$names = (Get-AzureRmStorageContainer -ResourceGroupName $store.ResourceGroupName -StorageAccountName $store.Name).Name
foreach($name in $names){
$date = (Get-AzureRmStorageContainer -ResourceGroupName $store.ResourceGroupName -StorageAccountName $store.Name -Name $name).LastModifiedTime
if($date -gt $x){
break
}
}
if($x -gt $date){
"Storage Account Name: $storename"
}
}
}
check_stores
【问题讨论】:
-
这就是PowerShell的美妙之处,你不需要自己迭代,
-eq操作符会自行迭代左边的变量:If ((Get-AzureRmStorageContainer -ResourceGroupName $store.ResourceGroupName -StorageAccountName $store.Name).LastModifiedTime -le $x) {"Storage Account Name: $storename"} -
@iRon 谢谢,但它不起作用!它只会给我一个包含此语句的每个容器的列表。就我而言,我只需要存储帐户,每个帐户的每个值都是 TRUE。这是一个有趣的部分。所有容器的“LastModifiedDate”应少于 6 个月。
-
` $Stores = Get-AzureRmResource -ODataQuery "
$filter=resourcetype eq 'Microsoft.Storage/storageAccounts'" $x = (Get-Date).AddDays(-180) $FilteredAccounts = (Get-AzureRmStorageContainer -ResourceGroupName $store.ResourceGroupName -StorageAccountName $store.Name).LastModifiedTime -le $x $FilteredAccounts | % { $storename } | Select -Unique
标签: azure powershell azure-storage