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