我试图在PowerShell中实现一个SharedKeyLite授权头函数。这是为了连接到Azure Tables REST API。我错过了一些东西,因为我总是出错:
function GenerateHeader($accountName, $accountKey, $action)
{
$xmsdate = get-date
$xmsdate = $xmsdate.ToUniversalTime()
$xmsdate = $xmsdate.toString('r')
$newLine = "`n";
$message = $xmsdate + $newline + "/" + $accountname + "/" + $action;
$hmacsha = New-Object System.Security.Cryptography.HMACSHA256
$hmacsha.key = [Convert]::FromBase64String($accesskey)
$signature = $hmacsha.ComputeHash([Text.Encoding]::UTF8.GetBytes($message))
$signature = [Convert]::ToBase64String($signature)
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("x-ms-version", "2014-02-14")
$headers.Add("x-ms-date", $xmsdate)
$headers.Add("Authorization", "SharedKeyLite " + $accountName + ":" + $signature)
return $headers
}
$uriString = "https://$StorageAccountName.table.core.windows.net/Tables"
$headers = GenerateHeader $StorageAccountName $StorageAccountKey "Tables"
Invoke-RestMethod -Uri $uriString -Method $method -Headers $headers -Body $body
Edit:下面是函数外部$Headers变量的输出示例...
Key : x-ms-version
Value : 2014-02-14
Key : x-ms-date
Value : Tue, 26 May 2015 19:30:20 GMT
Key : Authorization
Value : SharedKeyLite <MyStorageName>:lf+ndqhi4OeJhIfLljugT0dfcLbqXDBHwrQJn9Q66HQ=
所以这最终是一个简单的编码错误:(
我觉得现在发布这个有点傻,但我要发布一个答案,因为我在任何地方都找不到适合Azure的Powershell授权构建器。这个确实适用于Azure Tables...
function GenerateHeader($accountName, $accountKey, $action)
{
$xmsdate = get-date
$xmsdate = $xmsdate.ToUniversalTime()
$xmsdate = $xmsdate.toString('R')
$newLine = "`n";
$action = $action.ToLower()
$message = $xmsdate + $newline + "/" + $accountname + "/" + $action;
$hmacsha = New-Object System.Security.Cryptography.HMACSHA256
$hmacsha.key = [Convert]::FromBase64String($accountKey)
$signature = $hmacsha.ComputeHash([Text.Encoding]::UTF8.GetBytes($message))
$signature = [Convert]::ToBase64String($signature)
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Type", "application/json")
$headers.Add("x-ms-date", $xmsdate)
$headers.Add("Authorization", "SharedKeyLite " + $accountName + ":" + $signature)
return $headers
}
本文向大家介绍Windows 8 中的 PowerShell 3.0,包括了Windows 8 中的 PowerShell 3.0的使用技巧和注意事项,需要的朋友参考一下 Windows 8 惊艳登场,当Metro界面吸引了无数人的眼球时,其实还有很多特性值得关注,如PowerShell 3.0、Hyper-V 3.0、vhdx、IIS 8等。 PowerShell 2.0实践系列从本次开始全面转
powershell中是否有空合并运算符? 我希望能够在powershell中执行以下c#命令:
PowerShell 是一个跨平台的 (Windows, Linux 和 OS X) 自动化和配置工具(框架),可以和已有的工具友好集成,特别优化用于处理结构化数据 (如 JSON, CSV, XML 等), REST APIs 以及对象模型。它包含一个命令行 Shell、一个关联的脚本语言以及一个用于处理 cmdlets 的框架。 PowerShell 就相当于 Linux 下的 Bash 以及
本文向大家介绍PowerShell中的别名是什么?,包括了PowerShell中的别名是什么?的使用技巧和注意事项,需要的朋友参考一下 通常,别名是指命令其他名称。在系统管理员的生活中,他们需要简短而又熟悉的命令。PowerShell的动词名词cmdlet非常系统化,但在日常生活中不实用。因此,系统管理员使用PowerShell别名。 例如,-Dir或ls表示Get-ChildItem, cat
据我所知,PowerShell似乎没有一个针对所谓三元运算符的内置表达式。 例如,在支持三元运算符的C语言中,我可以编写如下内容: 如果PowerShell中并不存在这种情况,那么实现相同结果的最佳方法(即易于阅读和维护)是什么呢?
今天刚刚学习了正则表达式的基础知识,并通过一些努力,设法拼凑出一些几乎有效的东西。 我有一本书中的文档,我需要在子弹里找到文章,而不是散文。 子弹样本: Lorem ipsum Lorem(XXX)Lorem Lorem the ipsum Lorem ipsum,Lorem,and 散文示例:(右)lorem写了ipsum。Lorem ipsum动词ipsum。 到目前为止,这或多或少地起到了作