Private/Get-DataFromStorageTable.ps1
# Will be called in VM function Global:Get-DataFromStorageTable { [CmdletBinding()] <# .SYNOPSIS ... .DESCRIPTION ... #> param( [Parameter(Mandatory = $true, Position = 1)] [string] $SASKey, [Parameter(Mandatory = $true, Position = 2)] [string] $AccountName, [Parameter(Mandatory = $true, Position = 3)] [string] $TableName ) process { $accessKey = $SASKey $account_name = $AccountName $table_name = $TableName $date = ([System.DateTime]::Now).ToString("R") $api_version = "2016-05-31" $table_url = "https://$account_name.table.core.windows.net/$table_name" $data_type = "application/json" $canonicalResource = "/$account_name/$table_name"; $stringToSign = "POST`n`n$data_type`n$date`n$canonicalResource"; $stringToSign = "GET`n`n$data_type`n$date`n$canonicalResource"; $utf8enc = [System.Text.Encoding]::UTF8; $bytes = $utf8enc.GetBytes($stringToSign) $hmacsha = New-Object System.Security.Cryptography.HMACSHA256 $hmacsha.key = [System.Convert]::FromBase64String($accessKey) $signature = [System.Convert]::ToBase64String($hmacsha.ComputeHash([Text.Encoding]::UTF8.GetBytes($stringToSign))) $body = @{ PartitionKey = "1"; RowKey = [System.guid]::NewGuid().ToString(); Address = "Mountain View"; Age = "23"; } $json = $body | Convertto-JSON $table_headers = @{ "x-ms-date" = $date "x-ms-version" = $api_version "Authorization" = "SharedKey $account_name`:$signature" "Content-Type" = $data_type "Accept" = "application/json;odata=fullmetadata" } #Invoke-RestMethod -Method POST -Uri $table_url -Headers $table_headers -Body $json -Verbose Invoke-RestMethod -Method GET -Uri $table_url -Headers $table_headers # -Body $json -Verbose } } |