Public/Get-SpecAzTableByFilter.ps1
function Get-SpecAzTableByFilter { <# .SYNOPSIS Retrieves rows from an Azure table based on a custom filter. .DESCRIPTION The Get-SpecAzTableByFilter function retrieves rows from an Azure table using a custom filter expression. It requires the Azure table name, resource group, storage account, and a custom filter string. .PARAMETER TableName The name of the Azure table to query. .PARAMETER TableResourceGroup The resource group name of the Azure storage account containing the table. .PARAMETER TableStorageAccount The name of the Azure storage account containing the table. .PARAMETER CustomFilter The custom filter expression to apply to the table rows. This should follow the syntax and conventions of Azure Storage Table query operations. .EXAMPLE $filt = 'fred.bloggs' $customFilter = "(Last_Logged_On eq '$filt')" Get-SpecAzTableByFilter -TableName 'myTable' -TableResourceGroup 'myResourceGroup' -TableStorageAccount 'myStorageAccount' -CustomFilter $customFilter Retrieves rows from the 'myTable' Azure table in the 'myResourceGroup' resource group and 'myStorageAccount' storage account, using the custom filter expression "(Last_Logged_On eq 'fred.bloggs')". .INPUTS System.String .OUTPUTS System.Object .NOTES Author: owen.heaume Version: 1.0 #> [cmdletbinding()] param ( [Parameter(Mandatory = $true)] [string]$TableName, [Parameter(Mandatory = $true)] [string]$tableResourceGroup, [Parameter(Mandatory = $true)] [string]$tableStorageAccount, [Parameter(Mandatory = $true)] [string]$CustomFilter ) Begin { # clean up leading and trailing whitespace in vars $TableName = $TableName.Trim() $tableResourceGroup = $tableResourceGroup.Trim() $tableStorageAccount = $tableStorageAccount.Trim() $CustomFilter = $CustomFilter.Trim() # Get Storage account context try { $storageAccount = Get-AzStorageAccount -ResourceGroupName $tableresourceGroup -Name $tablestorageAccount -ErrorAction Stop $ctx = $storageAccount.Context } catch { Write-Error "Unable to locate storage account: $tableStorageAccount. Are you sure it exists?" exit 500 } try { $storageTable = Get-AzStorageTable –Name $TableName –Context $ctx -ErrorAction Stop $cloudTable = $storageTable.CloudTable } catch { Write-Error "Unable to locate table: $TableName. Are you sure it exists?" exit 500 } } process { Write-verbose "Attempting to get the row(s) based on your filter: $CustomFilter" $tableresult = Get-AzTableRow -table $cloudTable -CustomFilter $CustomFilter -ErrorAction Stop if ($null -eq $tableresult) { Write-Warning "No record found using the filter: $CustomFilter" } Return $tableResult } } |