我是Powershell的经验相对较少,非常感谢您的帮助。
我有一个运行多个查询并将数据保存到文件的脚本(基于MSOLAP连接)。 每个查询都有一个唯一的QueryID,它使用Python脚本(执行此操作+更多)从Excel电子表格中引用,然后将此QueryID传递给Powershell以执行查询。
该脚本有效,但我在此步骤中收到某些QueryID的错误:
$adapter.Fill($dataset)
有些工作,有些人不做。这是一种非常不一致的行为。
错误是:
异常通话"填写"用" 1"参数:"对象引用未设置为对象的实例。" 在D:\ script.ps1:33 char:1 + $ adapter.Fill($ dataset) + ~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:NullReferenceException
我使用Excel Powerpivot手动运行查询,它对那些QueryID和数据存在有效。参考Excel电子表格的内容是有效的,我也检查了。
我的代码如下:
$param ($QueryID)
$connectionString = “Provider=MSOLAP.5;Integrated Security=SSPI;Persist Security Info=True;Data Source=1.2.3.4;Initial Catalog=Reporting;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error”
$query = "SELECT QUERY..."+$QueryID+"MORE OF THE QUERY"
$savefilename = ("D:\output.csv")
$connection = New-Object -TypeName System.Data.OleDb.OleDbConnection
$connection.ConnectionString = $connectionString
$command = $connection.CreateCommand()
$command.CommandTimeout = 0
$command.CommandText = $query
$adapter = New-Object -TypeName System.Data.OleDb.OleDbDataAdapter $command
$dataset = New-Object -TypeName System.Data.DataSet
$adapter.Fill($dataset)
foreach ($Row in $dataset.Tables[0]) {
#...
}