我试图制作一个脚本,该脚本通过Powershell Runbook为SSAS创建自动分区,但是每当我尝试读取xmla文件时,都会出现以下错误:
我的代码如下:
let search = [2342, 1900, 1800, 2310]
search = search.map((el, i) => {
if (el > 2200) return i;
}).filter(el => el !== undefined);
console.log(search);
使用以下代码时:
$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)
答案 0 :(得分:2)
轻松修复。
在第一个示例中,您正在正确地从Blob中读取文件的内容。但是,C:\arst.xmla
期望使用文件路径(例如.xmla
),并且无法处理-Query
文件的原始内容。
相反,请使用Invoke-ASCmd
参数将文件内容传递给...
$query = $blob.ICloudBlob.DownloadText()
Invoke-ASCmd `
-Database $AnalysisServiceDatabase `
-Query $query `
-server $AnalysisServiceServer
,例如:
iconEnabledColor