使用PowerShell将服务总线队列消息内容转换为字符串



我使用带有powershell的rest api从服务总线队列消息中获取详细信息。我不确定它是什么时候发生的,但现在内容以字节为单位,例如:内容:{64,6115116…}。如何将其转换为带有数据的普通字符串?

function Get-SAStoken {
param (
$QueueName,
$Access_Policy_Name,
$Access_Policy_Key
)
$expireInSeconds = 300

[Reflection.Assembly]::LoadWithPartialName("System.Web")| out-null
$uri="my.servicebus.windows.net/$QueueName"
#Token expires now+300
$expires=([DateTimeOffset]::Now.ToUnixTimeSeconds())+ $expireInSeconds
$signatureString=[System.Web.HttpUtility]::UrlEncode($uri)+ "`n" + [string]$expires
$HMAC = New-Object System.Security.Cryptography.HMACSHA256
$HMAC.key = [Text.Encoding]::ASCII.GetBytes($Access_Policy_Key)
$signature = $HMAC.ComputeHash([Text.Encoding]::ASCII.GetBytes($signatureString))
$signature = [Convert]::ToBase64String($signature)

$sasToken = "SharedAccessSignature sr={0}&sig={1}&se={2}&skn={3}" -f  [System.Web.HttpUtility]::UrlEncode($uri), 
      [System.Web.HttpUtility]::UrlEncode($signature), 
      [System.Web.HttpUtility]::UrlEncode($expires), 
      [System.Web.HttpUtility]::UrlEncode($Access_Policy_Name)

return $sasToken 
}
function Get-SBmessage {
param (
$SASToken,
$Queue
)  
$queue = $Queue
$header = @{ Authorization = $SASToken } 
$postService = Invoke-WebRequest -Uri "https://my.servicebus.windows.net/$queue/messages/head" `
-Headers $header `
-Method Post 


return $postService

}
$Queue = "capacity-checker"
$SAStokenRunningTest = Get-SAStoken -QueueName $Queue  -Access_Policy_Name "pipeline" -Access_Policy_Key "key-for-sb-queue"
$SBmessage = Get-SBmessage -SASToken $SAStokenRunningTest -Queue $Queue
$SBmessage

所以我的解决方案是

[byte[]]$bytes = $SBmessage.Content
$msContent = [System.Text.Encoding]::ASCII.GetString($bytes)

感谢@MathiasR.Jessen对的帮助

最新更新