如何解决在powershell中访问blob json的键值对
[
{
"ICloudBlob": {
"StreamWriteSizeInBytes": 4194304,"ServiceClient": {
"AuthenticationScheme": 1,"BufferManager": null,"Credentials": {
"SASToken": null,"AccountName":
"storageaccountappse9a4d","KeyName": null,"IsAnonymous": false,"IsSAS": false,"IsSharedKey": true,"IsToken": false,"SASSignature": null
},"BaseUri":
"https://storageaccountappse9a4d.blob.core.windows.net/","StorageUri": {
"PrimaryUri":
"https://storageaccountappse9a4d.blob.core.windows.net/","SecondaryUri": null
},"DefaultRequestOptions": {
"RetryPolicy": {
},"EncryptionPolicy": null,"RequireEncryption": null,"CustomerProvidedKey": null,"EncryptionScope": null,"AbsorbConditionalErrorsOnRetry": null,"LocationMode": 0,"ServerTimeout": null,"MaximumExecutionTime": null,"NetworkTimeout": null,"ParallelOperationThreadCount": 1,"SingleBlobUploadThresholdInBytes": 134217728,"UseTransactionalMD5": null,"StoreBlobContentMD5": null,"disableContentMD5Validation": null,"ChecksumOptions": {
"disableContentMD5Validation": null,"StoreContentMD5": null,"disableContentCRC64Validation": null,"UseTransactionalCRC64": null
}
我想访问 ParallelOperationThreadCount 参数,为此我使用以下代码:
$JSON_obj=Get-AzStorageAccount | Get-AzStorageContainer | Get-AzStorageBlob | ConvertTo-JSON -Depth
50
$ParallelOperationThreadCount=@()
foreach($i in $JSON_obj)
{
$ParallelOperationThreadCount+=$i.ICloudBlob.ServiceClient.DefaultRequestOptions.ParallelOperationThreadCount
}
$ParallelOperationThreadCount
然而,在运行这个时,没有输出出来。它运行然后退出。 有什么办法可以找出可行的方法吗?
解决方法
cmdlet ConvertTo-JSON
会将您的结果转换为 json 字符串。它不会将结果作为数组返回。
所以我建议您删除第一行命令中的 cmdlet ConvertTo-JSON
。执行此操作后,该命令将结果作为对象数组返回。然后您的脚本将返回正确的结果。
例如(我在一个存储帐户中这样做)
Connect-AzAccount
$accountName =""
$groupName=""
$JSON_obj=(Get-AzStorageAccount -ResourceGroupName $groupName -Name $accountName | Get-AzStorageContainer | Get-AzStorageBlob )
$ParallelOperationThreadCount=@()
foreach($i in $JSON_obj)
{
$ParallelOperationThreadCount+=$i.ICloudBlob.ServiceClient.DefaultRequestOptions.ParallelOperationThreadCount
}
$ParallelOperationThreadCount
此外,我们还可以将脚本简化如下。
$ParallelOperationThreadCount= (Get-AzStorageAccount -ResourceGroupName $groupName -Name $accountName |
Get-AzStorageContainer | Get-AzStorageBlob|
Select-Object -Property @{Name="ParallelOperationThreadCount";Expression={$_.ICloudBlob.ServiceClient.DefaultRequestOptions.ParallelOperationThreadCount}})
$ParallelOperationThreadCount
更新
请参考以下脚本
Connect-AzAccount
$accountName =""
$groupName=""
$JSON_obj=(Get-AzStorageAccount -ResourceGroupName $groupName -Name $accountName | Get-AzStorageContainer | Get-AzStorageBlob )
$ParallelOperationThreadCount=@()
foreach($i in $JSON_obj)
{
$ParallelOperationThreadCount+=$i.ICloudBlob.ServiceClient.DefaultRequestOptions.ParallelOperationThreadCount
}
$ParallelOperationThreadCount
$JSON_obj|ConvertTo-JSON -Depth 50 | % { [System.Text.RegularExpressions.Regex]::Unescape($_) } | Out-File -Encoding Ascii - append C:\Users\rakshitas\Documents\json_excel\blob.json
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。