1

次のスクリプトを使用して、データベース データソースの接続文字列を取得しようとしています。

   $Analysis_Server = New-Object Microsoft.AnalysisServices.Server  
   $Analysis_Server.connect("$server") 

   $database = $Analysis_Server.Databases[7]
   $c = $database.DataSources[0].ConnectionString
   $c

何も出力していません。

私は次のようにデバッグを試みました:

$Analysis_Server.Databases

これにより、サーバー上のすべてのデータベースが出力されます

インデックスを作成すると$Analysis_Server.Databases[]、インデックスが作成されたデータベースが出力されます(私の場合、7、データベース8が出力されます)

明らかに Database プロパティが機能しています。

-------------更新:--------------

サーバーでのデータベースの外観は次のとおりです

server1_Databases

次の各行の機能は次のとおりです。

   $Analysis_Server.Databases

これが出力されます

データベース

気づくことができることの1つは、何らかの理由で、写真のように分析サーバー上にある順序ではなく、印刷されていることです...なぜそうなのかわかりません

これは、このコマンドが出力するものです。

Analysis_Server.Databases[0]

データベース8

インデックス 0 が機能したので、インデックス[1], [2]などを作成できるはずです...

したがって、次の

Analysis_Server.Databases[1] 
Analysis_Server.Databases[2]

プリント:

データベース 1 および 3

次に、接続文字列に進みます。

$Analysis_Server.Databases[0].DataSources[0].ConnectionString

それが出力されます:

接続タイムアウト = 60;ユーザー ID = someID;データ ソース = 10.10.10.10;永続的なセキュリティ情報 = True

Database8 の接続文字列のようです

かっこいいので、これもできるはずです:

$Analysis_Server.Databases[1].DataSources[0].ConnectionString

ただし、何も印刷されません。印刷されているように見える唯一のインデックスはDatabases[0]

これが$Analysis_Server.Databases[0].DataSources[0]出力されるものです:

データソース0

すべてのデータベースで同じことができるはずです

$Analysis_Server.Databases[1].DataSources[0]

$Analysis_Server.Databases[2].DataSources[0] 等..

しかし、何も印刷されません!

4

3 に答える 3