powershell - 使用 PowerShell 将服务总线队列消息内容转换为字符串
问题描述
我使用带有 powershell 的 rest api 从服务总线队列消息中获取详细信息。我不确定它何时发生,但现在内容以字节为单位,例如:内容:{64、6、115、116…}。如何将其转换为带有数据的普通字符串?
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 的帮助
推荐阅读
- bash - 如何使用 Curl 显示进度条制作 Bash 脚本
- django - 无法通过 DRF 上传文件
- java - 使用递归打印二进制
- azure - 从 Azure 中的表存储触发函数
- python-3.x - 从 Anaconda (Spyder) 运行时如何可靠地说服 matplotlib 使用 PySide2 后端
- ruby-on-rails - 如何在 Windows 10 上安装自制软件?
- javascript - 为什么点击事件没有触发?
- java - 包 com.google.zxing.client.j2se 不存在 bufferedimageluminancesource
- android - 如何使用命令行(CMD)冷启动模拟器
- splunk - 如何根据 splunk 中的第一条消息标记集群