我正在尝试创建一个PowerShell脚本,该脚本将使用以下命令对特定资源组内的所有Azure资源进行删除锁定:
$resources=Get-AzureRmResource |Format-Table -property resourcename, resourcetype
我可以获取资源组中的当前资源,并在表格中格式化,如下所示
ResourceName ResourceType
------------ ------------
georgitestVM Microsoft.Compute/virtualMachines
georgitestvm39 Microsoft.Network/networkInterfaces
georgitestVM-nsg Microsoft.Network/networkSecurityGroups
georgitestVM-ip Microsoft.Network/publicIPAddresses
georgitest-vnet Microsoft.Network/virtualNetworks
dummyresourcegroup407 Microsoft.Storage/storageAccounts
storagedummyaccount Microsoft.Storage/storageAccounts
这是输出:
New-AzureRmResourceLock
中找到输出的外观
现在我想为上表中的7个资源中的每一个创建一个锁,但我不确定如何找出语法,以便PowerShell可以动态地将表中的值传递给{{1}的参数} cmdlet。
在没有循环的情况下执行这7个锁的虚拟方法将是
New-AzureRmResourceLock -LockLevel CanNotDelete -LockName YouWontDeletegeorgitestVM `
-resourceName georgitestVM -ResourceType Microsoft.Compute/virtualMachines `
-resourceGroupName dummyresourcegroup -force -verbose
New-AzureRmResourceLock -LockLevel CanNotDelete -LockName YouWontDeletegeorgitestvm39 `
-resourceName georgitestvm39 -ResourceType Microsoft.Network/networkInterfaces `
-resourceGroupName dummyresourcegroup -force -verbose
New-AzureRmResourceLock -LockLevel CanNotDelete -LockName YouWontDeletegeorgitestVM-nsg `
-resourceName georgitestVM-nsg -ResourceType Microsoft.Network/networkSecurityGroups `
-resourceGroupName dummyresourcegroup -force -verbose
New-AzureRmResourceLock -LockLevel CanNotDelete -LockName YouWontDeletegeorgitestVM-ip `
-resourceName georgitestVM-ip -ResourceType Microsoft.Network/publicIPAddresses `
-resourceGroupName dummyresourcegroup -force -verbose
New-AzureRmResourceLock -LockLevel CanNotDelete -LockName YouWontDeletegeorgitest-vnet `
-resourceName georgitest-vnet -ResourceType Microsoft.Network/virtualNetworks `
-resourceGroupName dummyresourcegroup -force -verbose
New-AzureRmResourceLock -LockLevel CanNotDelete -LockName YouWontDeletedummyresourcegroup407 `
-resourceName dummyresourcegroup407 -ResourceType Microsoft.Storage/storageAccounts `
-resourceGroupName dummyresourcegroup -force -verbose
New-AzureRmResourceLock -LockLevel CanNotDelete -LockName YouWontDeletestoragedummyaccount `
-resourceName storagedummyaccount -ResourceType Microsoft.Storage/storageAccounts `
-resourceGroupName dummyresourcegroup -force -verbose
可以看出,我希望用-LockName
的连接值填充("YouWontDelete"+$resourceName)
参数。
我分别尝试使用表中的资源名称值填充-resourcename
参数,最后使用我问题开头的表中的资源类型值填充-resourcetype
参数。
请推荐一种可能的语法来实现这一点(使用PowerShell foreach循环创建所有上述7个锁)。
答案 0 :(得分:1)
答案 1 :(得分:0)
以下是使用bash和蔚蓝cli的方法:
az resource list -g myResourcegroup -o tsv --query [].[name,type] | awk '{system("az lock create -t CanNotDelete --notes myDeleteNotes -n myNameOfLock -g myResourcegroup --resource "$1 " --resource-type "$2)}'