Public/Remove-AzStorageTableRow.ps1
|
function Remove-AzStorageTableRow { <# .SYNOPSIS Remove-AzStorageTableRow - Removes a specified table row .DESCRIPTION Remove-AzStorageTableRow - Removes a specified table row. It accepts multiple deletions through the Pipeline when passing entities returned from the Get-AzureStorageTableRow available cmdlets. It also can delete a row/entity using Partition and Row Key properties directly. .PARAMETER Table Table object of type Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageTable where the entity exists .PARAMETER Entity (ParameterSetName=byEntityPSObjectObject) The entity/row with new values to perform the deletion. .PARAMETER PartitionKey (ParameterSetName=byPartitionandRowKeys) Partition key where the entity belongs to. .PARAMETER RowKey (ParameterSetName=byPartitionandRowKeys) Row key that uniquely identifies the entity within the partition. .EXAMPLE # Deleting an entry by entity PS Object $saContext = (Get-AzStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccount).Context $table = Get-AzStorageTable -Name $tableName -Context $saContext [string]$filter1 = [Microsoft.WindowsAzure.Storage.Table.TableQuery]::GenerateFilterCondition("firstName",[Microsoft.WindowsAzure.Storage.Table.QueryComparisons]::Equal,"Paulo") [string]$filter2 = [Microsoft.WindowsAzure.Storage.Table.TableQuery]::GenerateFilterCondition("lastName",[Microsoft.WindowsAzure.Storage.Table.QueryComparisons]::Equal,"Marques") [string]$finalFilter = [Microsoft.WindowsAzure.Storage.Table.TableQuery]::CombineFilters($filter1,"and",$filter2) $personToDelete = Get-AzStorageTableRowByCustomFilter -table $table -customFilter $finalFilter $personToDelete | Remove-AzStorageTableRow -table $table .EXAMPLE # Deleting an entry by using partitionkey and row key directly $saContext = (Get-AzRmStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccount).Context $table = Get-AzStorageTable -Name $tableName -Context $saContext Remove-AzStorageTableRow -table $table -partitionKey "TableEntityDemoFullList" -rowKey "399b58af-4f26-48b4-9b40-e28a8b03e867" .EXAMPLE # Deleting everything $saContext = (Get-AzRmStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccount).Context $table = Get-AzStorageTable -Name $tableName -Context $saContext Get-AzStorageTableRowAll -table $table | Remove-AzureStorageTableRow -table $table #> [CmdletBinding()] param ( [Parameter(Mandatory=$true)] $table, [Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName="byEntityPSObjectObject")] $entity, [Parameter(Mandatory=$true,ParameterSetName="byPartitionandRowKeys")] [AllowEmptyString()] [string]$partitionKey, [Parameter(Mandatory=$true,ParameterSetName="byPartitionandRowKeys")] [AllowEmptyString()] [string]$rowKey ) begin { $updatedEntityList = @() $updatedEntityList += $entity if ($updatedEntityList.Count -gt 1) { throw "Delete operation cannot happen on an array of entities, altough you can pipe multiple items." } $results = @() } process { if ($PSCmdlet.ParameterSetName -eq "byEntityPSObjectObject") { $partitionKey = $entity.PartitionKey $rowKey = $entity.RowKey } $entityToDelete = invoke-expression "[Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity](`$table.CloudTable.ExecuteAsync([Microsoft.WindowsAzure.Storage.Table.TableOperation]::Retrieve(`$partitionKey,`$rowKey))).Result.Result" if ($entityToDelete -ne $null) { $results += $table.CloudTable.ExecuteAsync((invoke-expression "[Microsoft.WindowsAzure.Storage.Table.TableOperation]::Delete(`$entityToDelete)")) } } end { return ,$results } } # SIG # Begin signature block # MIINGQYJKoZIhvcNAQcCoIINCjCCDQYCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUOtuwRu64/Z+5K18UcHXGbwfp # hBqgggpOMIIE7TCCA9WgAwIBAgIQQZPGqlPXiwG2ivrlaoev8jANBgkqhkiG9w0B # AQsFADB/MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRp # b24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMDAuBgNVBAMTJ1N5 # bWFudGVjIENsYXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQTAeFw0xODAzMTkw # MDAwMDBaFw0yMTA2MTAyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UECAwM # UGVubnN5bHZhbmlhMQ4wDAYDVQQHDAVFeHRvbjEmMCQGA1UECgwdQmVudGxleSBT # eXN0ZW1zLCBJbmNvcnBvcmF0ZWQxJjAkBgNVBAMMHUJlbnRsZXkgU3lzdGVtcywg # SW5jb3Jwb3JhdGVkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA79TX # 6inxpO0aZE9va+HOzFRDWoBh9Cy0gp8Rnya/hUK1cLI250PQQed0SbT4bWNbXvAU # HekN8Xm6zL53akGbhJre7f9iqTfm2WFdcNDvQxcFwYVVvOa/R5kycmb31Uv30zuT # zeSPjfn4yuEajN6piRPPOaGQpwpeVCRmCISgWrVrdmiFP9TCr2E1DNGBtH+uR5gM # 4r/ZAtzwQKBFJH9lzVLN50cRbWFyft1jcEy75hSqlME+5HqkoNs/RamLCPFM6xr7 # NqYNA/7cSv1bH9vG/REGccre06+hAA4PQ4sRyTfNbEKB9lp04+rbkS6tYXWyyGqK # MaK1UiRqnBwmr58OLQIDAQABo4IBXTCCAVkwCQYDVR0TBAIwADAOBgNVHQ8BAf8E # BAMCB4AwKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3N2LnN5bWNiLmNvbS9zdi5j # cmwwYQYDVR0gBFowWDBWBgZngQwBBAEwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9k # LnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGQwXaHR0cHM6Ly9kLnN5bWNiLmNv # bS9ycGEwEwYDVR0lBAwwCgYIKwYBBQUHAwMwVwYIKwYBBQUHAQEESzBJMB8GCCsG # AQUFBzABhhNodHRwOi8vc3Yuc3ltY2QuY29tMCYGCCsGAQUFBzAChhpodHRwOi8v # c3Yuc3ltY2IuY29tL3N2LmNydDAfBgNVHSMEGDAWgBSWO1PweTOXr32D7y4rzMq3 # hh5yZjAdBgNVHQ4EFgQUwKmk2F+wqoV90WWkKr+6Emnsg2cwDQYJKoZIhvcNAQEL # BQADggEBAELOfisTEfHRye6F8VgF1b8SyK5Djmoi6bRYI9m2zzTcbTSEAAeZg5zR # rv0BOTICLxkltcJK2lxKahpTNa5kNF3jAiwNK1eCz6Id65iLbEo7xVPkTJzuFzdX # wiCWjo4CO9DEIHJSRyDaPv4bKeW4+4f9YAhJZXcQgH12nRqJaw0rQUig1MZmTPuj # prF3xeODz2wd67ExM6nzfeHkHELG5JXcjmA5fVBP7KaDibpYGpg+CIHAl9ZC9xnE # MU4MMab6QS3OZz3EoVSTV6ej9On74E+I8k7/X9NzKZGCQ0tJ28V2OhXD/oXW7a5N # Aj7F/TiWHEjkdZUTOBZLR/feG2yghBUwggVZMIIEQaADAgECAhA9eNf5dklgsmF9 # 9PAeyoYqMA0GCSqGSIb3DQEBCwUAMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMO # VmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsx # OjA4BgNVBAsTMShjKSAyMDA2IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6 # ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFBy # aW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHNTAeFw0xMzEyMTAwMDAw # MDBaFw0yMzEyMDkyMzU5NTlaMH8xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1h # bnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29y # azEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBTaWduaW5n # IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl4MeABavLLHSCMTX # aJNRYB5x9uJHtNtYTSNiarS/WhtR96MNGHdou9g2qy8hUNqe8+dfJ04LwpfICXCT # qdpcDU6kDZGgtOwUzpFyVC7Oo9tE6VIbP0E8ykrkqsDoOatTzCHQzM9/m+bCzFhq # ghXuPTbPHMWXBySO8Xu+MS09bty1mUKfS2GVXxxw7hd924vlYYl4x2gbrxF4Gpiu # xFVHU9mzMtahDkZAxZeSitFTp5lbhTVX0+qTYmEgCscwdyQRTWKDtrp7aIIx7mXK # 3/nVjbI13Iwrb2pyXGCEnPIMlF7AVlIASMzT+KV93i/XE+Q4qITVRrgThsIbnepa # ON2b2wIDAQABo4IBgzCCAX8wLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNo # dHRwOi8vczIuc3ltY2IuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwbAYDVR0gBGUw # YzBhBgtghkgBhvhFAQcXAzBSMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LnN5bWF1 # dGguY29tL2NwczAoBggrBgEFBQcCAjAcGhpodHRwOi8vd3d3LnN5bWF1dGguY29t # L3JwYTAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vczEuc3ltY2IuY29tL3BjYTMt # ZzUuY3JsMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDAzAOBgNVHQ8BAf8E # BAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVN5bWFudGVjUEtJLTEtNTY3 # MB0GA1UdDgQWBBSWO1PweTOXr32D7y4rzMq3hh5yZjAfBgNVHSMEGDAWgBR/02Wn # wt3su/AwCfNDOfoCrzMxMzANBgkqhkiG9w0BAQsFAAOCAQEAE4UaHmmpN/egvaSv # fh1hU/6djF4MpnUeeBcj3f3sGgNVOftxlcdlWqeOMNJEWmHbcG/aIQXCLnO6SfHR # k/5dyc1eA+CJnj90Htf3OIup1s+7NS8zWKiSVtHITTuC5nmEFvwosLFH8x2iPu6H # 2aZ/pFalP62ELinefLyoqqM9BAHqupOiDlAiKRdMh+Q6EV/WpCWJmwVrL7TJAUwn # ewusGQUioGAVP9rJ+01Mj/tyZ3f9J5THujUOiEn+jf0or0oSvQ2zlwXeRAwV+jYr # A9zBUAHxoRFdFOXivSdLVL4rhF4PpsN0BQrvl8OJIrEfd/O9zUPU8UypP7WLhK9k # 8tAUITGCAjUwggIxAgEBMIGTMH8xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1h # bnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29y # azEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBTaWduaW5n # IENBAhBBk8aqU9eLAbaK+uVqh6/yMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEM # MQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB # gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBRBj1t+H5sROreg # 986ky90AEv1kNTANBgkqhkiG9w0BAQEFAASCAQCHAi38DIhTtUx3uATIjW5aQO4C # njQiWToOasspAGkDRn+bVJ3TRlvDJfQbjuqaNjthG9TZhcKw7a+1I+CmZPo7xobr # ve2OCOzkekjUjTJNdu/5tCwAUXw8bm7rPkMdQBk41oPkYbanjyoMQywpjEaLuFlO # 3EThEBIE/eJoMJ2o+9HGwp1l3Y74cMN3esLYgPHObXeOUGxSaxQyYSXSDBqExv8O # Dv0DnhyVp1iX0k+ZCydVcntnnjkNJ0oSGVGZXq/BDaR0zypNqsJtv9wcLxsGLNaa # M2ycUOvkpOwgcjWYDQPXKPKM91tL2z69MIDAr/M35aiqmXlyNlcTuFyRM3MZ # SIG # End signature block |