Powershell Runbook [Invoke-ASCmd],xmla 文件的 FileNotFoundException

Powershell Runbook [Invoke-ASCmd], FileNotFoundException for xmla file

我正在尝试制作一个脚本,通过 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)

我收到这个错误:

轻松修复。

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

而是使用 -Query 参数将文件内容传递给 Invoke-ASCmd 例如:

...

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