Powershell Runbook [Invoke-ASCmd], FileNotFoundException для XML-файла

Я пытаюсь создать скрипт, который создает автоматические разделы для SSAS через Powershell Runbook, но всякий раз, когда я пытаюсь прочитать файл 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)

Я получаю эту ошибку: введите здесь описание изображения


person sofboy    schedule 13.06.2019    source источник


Ответы (1)


Легко исправить.

В первом примере вы правильно читаете содержимое файла из большого двоичного объекта. Но -InputFile ожидает путь к файлу (например, C:\arst.xmla) и не может обработать необработанное содержимое файла .xmla.

Вместо этого используйте параметр -Query для передачи содержимого файла в Invoke-ASCmd, например:

...

$query = $blob.ICloudBlob.DownloadText()
Invoke-ASCmd `
    -Database $AnalysisServiceDatabase `
    -Query $query `
    -server $AnalysisServiceServer 
person HAL9256    schedule 13.06.2019
comment
Это решило проблему. Спасибо :) - person sofboy; 14.06.2019