【问题标题】:Powershell Runbook [Invoke-ASCmd], FileNotFoundException for xmla filePowershell Runbook [Invoke-ASCmd],xmla 文件的 FileNotFoundException
【发布时间】:2019-06-13 13:03:31
【问题描述】:

我正在尝试创建一个通过 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)

我收到此错误:

【问题讨论】:

    标签: azure powershell ssas azure-runbook


    【解决方案1】:

    轻松修复。

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

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

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

    【讨论】:

    • 这解决了这个问题。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    相关资源
    最近更新 更多