2

我正在尝试创建一个脚本,通过 Powershell Runbook 为 SSAS 创建自动分区,但是每当我尝试读取 xmla 文件时,都会出现以下错误: 在此处输入图像描述

在此处输入图像描述

我调用它的代码如下:

$StorageAccount = Get-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName

$blob = Get-AzureStorageBlob -Context $StorageAccount.Context -Container "Database name" -Blob "CreateNewPartition.xmla"

$file = $blob.ICloudBlob.DownloadText()
Invoke-ASCmd `
    -Database $AnalysisServiceDatabase `
    -InputFile $file `
    -server $AnalysisServiceServer 

使用以下代码时:

$memStream = New-Object System.IO.MemoryStream
$blob.ICloudBlob.DownloadToStream($memStream)
$readStream = New-Object System.IO.StreamReader($memStream, [System.Text.Encoding]::Unicode)
$memStream.Position = 0
$file = ($readStream.ReadToEnd() -replace "`0",'' | ConvertFrom-Json)

我收到此错误: 在此处输入图像描述

在尝试此代码时:

$byteArray = New-Object Byte[] $blob.Length
$file = $blob.ICloudBlob.DownloadToByteArray($byteArray, 0)

我收到此错误: 在此处输入图像描述

4

1 回答 1

2

轻松修复。

在第一个示例中,您正确地从 blob 中读取文件的内容。但是,-InputFile需要一个文件路径(例如C:\arst.xmla),并且无法处理文件的原始内容.xmla

相反,使用-Query参数将文件的内容传递给Invoke-ASCmd例如:

...

$query = $blob.ICloudBlob.DownloadText()
Invoke-ASCmd `
    -Database $AnalysisServiceDatabase `
    -Query $query `
    -server $AnalysisServiceServer 
于 2019-06-13T14:50:26.430 回答