New-AZTable--v1-0.psm1
$FunctionScriptName = "New-AZTable" Write-Verbose "Import-Start| [$($FunctionScriptName)]" #* Dependencies # Import-Function -Scope "Support" -Function "Get-SAStokenValidity" -Version "1.X" function New-AZTable { <# .SYNOPSIS New AZ Table .DESCRIPTION Create new AZ Table .PARAMETER Config Config param Expects following values: StorageAccount / Sastoken .PARAMETER StorageAccount Storageaccount to use Overrides value from config param .PARAMETER sastoken sastoken to use Overrides value from config param .PARAMETER Entity Table to create - Expects direct list or single object .PARAMETER skipSAScheck ignore SAStoken check recommended if a lot of tables with the same token shall be used .EXAMPLE New-AZTable -Config $Config -Entity $Entity $Entity | New-AZTable -Config $Config -sastoken $sastoken .NOTES AUTHOR: Ken Dobrunz // Ken.Dobrunz@Direkt-Gruppe.de | Direkt Gruppe WEBSITE: http://kensmagic.site LASTEDIT: 02.06.2020 - Version: 1.0 #> [cmdletbinding()] Param( #* Active data # StorageConfig - Config or other 2 needed [Parameter()][Alias('StorageConfig')]$Config, [Parameter()][Alias('Storage')]$StorageAccount, [Parameter()][Alias('sas')]$sastoken, # Entity [parameter(ValueFromPipeline,Mandatory)][Alias('Table')]$Entity, [Parameter()][switch]$skipSAScheck ) Begin { $SelfIdentifier = "NewTable" Write-Debug "[$($SelfIdentifier)] Start" $StorageAccount = if ($StorageAccount) { $StorageAccount }elseif ($Config.StorageAccount) { $Config.StorageAccount }else { Write-Error "[$($SelfIdentifier)] No StorageAccount provided" } $sastoken = if ($sastoken) { $sastoken }elseif ($Config.sastoken) { $Config.sastoken }else { Write-Error "[$($SelfIdentifier)] No sastoken provided" } if (!$skipSAScheck) { if (!(Get-SAStokenValidity -ReadOnlyObject -Table -sastoken $sastoken)) { throw "[$($SelfIdentifier)] Sastoken not valid" } } else { Write-Verbose "[$($SelfIdentifier)] Skipped sas check due to skip flag" } $Method = "POST" $TableAPIHeader = @{ "x-ms-version" = "2019-07-07" Accept = "application/json;odata=minimalmetadata" } $functionverbosecount = 0 } Process { $Entity | ForEach-Object { $Body = @{TableName=$_} | ConvertTo-Json $table_uri = "https://$($StorageAccount).table.core.windows.net/Tables" Write-Verbose "[$($SelfIdentifier)] [$($Method)] @ [$($table_uri)] - [$($_)] " Invoke-RestMethod -Method $Method -uri ($table_uri + $sastoken) -Headers $TableAPIHeader -ContentType application/json -Body $Body $functionverbosecount++ } } End { if ($functionverbosecount -gt 1) { Write-Verbose "[$($SelfIdentifier)] processed $($functionverbosecount) entries" } Write-Debug "[$($SelfIdentifier)] END" } } #v1.0 Export-ModuleMember -Function * Write-Verbose "Import-END| [$($FunctionScriptName)]" |