2017-05-23 1 views
0

で結果。私はこれまで何をやったかのPowershellを連結変数は、私は、可用性グループとリスナー名を取得するサーバのリストの両方を連結して、リソースのクラスタを得るためにそれを使用する必要がSystem.Data.DataRow

foreach ($cluster in GC "D:\TEST\Servers_List_TEST.txt") 
{ 
$AGName = invoke-sqlcmd -Serverinstance $cluster -query "select left(name,25) as ' ' from sys.availability_groups" 
$LNName = invoke-sqlcmd -Serverinstance $cluster -query "select left(dns_name,25) as ' ' from sys.availability_group_listeners" 
$NetworkName = "$AGName_$LNName" 
Get-ClusterResource -cluster $cluster -name $NetworkName | Get-ClusterParameter HostRecordTTL,RegisterAllProvidersIP } 

主な問題は、$ NetworkNameです。それは代わり$AGName_$LNName連結する、System.data.DataRowを返す'S(下線は両者が必要です)。

答えて

1

あなたの主な問題は、$AGNameとそのパートナー変数$LNNameSystem.Data.DataRowというオブジェクトであることです。Invoke-SQLcmdが返されます。それらは単純な文字列ではありません。あなたはPowerShellを文字列にそれらを強制されているので、この場合には、単なるオブジェクト名で、それらのオブジェクトのToString()メソッドを呼び出します。

また、(ちょうどスペースである)あなたのクエリでのオブジェクトプロパティその与えられています。結果のオブジェクトはそのプロパティ名を使用しています。

あなたのクエリで適切な列名を追加する必要がありますが、いずれかの方法でそのプロパティを呼び出して、関連するデータを引き出すことができるようになります。だから我々は、プロパティの値にあなたの助けや助言のための[space]

+0

おかげで多くのことを得ている部分式を使用して

$NetworkName = "$($AGName." ")_$($LNName." ")" 

!それは非常にうまくいった:) – AdemirP

関連する問題