【发布时间】:2017-10-27 10:43:14
【问题描述】:
我正在尝试创建一个 PowerShell 脚本,该脚本将使用以下方法对特定资源组内的所有 Azure 资源设置删除锁:
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 14393 1715
我可以在我的资源组中获取当前资源并在下表中格式化
$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
您还可以在随附的屏幕截图中找到输出的外观CLICK HERE FOR SCREENSHOT)
现在我想为上表中的 7 个资源中的每一个创建一个锁,但我不确定如何找出语法,以便 PowerShell 可以动态地将表中的值传递给 New-AzureRmResourceLock 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
可以看出,我希望用("YouWontDelete"+$resourceName) 的串联值填充-LockName 参数。
我分别尝试用表中的资源名称值填充-resourcename 参数,最后用我的问题开始时表中的资源类型值填充-resourcetype 参数。
请推荐一种可能的语法来实现这一点(使用 powershell foreach 循环创建上述所有 7 个锁)。
【问题讨论】:
标签: powershell azure-powershell