2016-04-05 8 views
0

私は* nixスクリプトのバックグラウンドから来ており、私は一般的にはpowershellとWindowsの管理者の初心者です。私はExchange/IIS smtp仮想ホストのコレクションのSmartHost値をチェックするスクリプトを書こうとしています。私は、ADSIクエリ文字列に、ループ変数を挿入する方法を把握しようとしているが、+演算子は、トリックを行いません:単一または二重引用符で+を使用して引用符で囲まれた文字列をpowershellで変数に結合する

$hosts = @("host1","host2") 

foreach ($hostname in $hosts) { 
$SMTPSvc = [ADSI]'IIS://' + $hostname + '/smtpsvc/1' 
echo $SMTPSvc.SmartHost 
} 

は私に、このエラーを与える:

Method invocation failed because [System.DirectoryServices.DirectoryEntry] does not contain a method named 'op_Addition'. At line:3 char:1 + $SMTPSvc = [ADSI]'IIS://' + $hostname + '/smtpsvc/1' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound

何ADSIクエリ文字列にループしたホスト値を挿入するための適切なまたは好ましい方法でしょうか?

答えて

1

操作の問題のようです。クエリの最初の部分:

[ADSI]'IIS://' 

は、クエリ文字列に変換され、その後、あなたは結果[System.DirectoryServices.DirectoryEntry]オブジェクトに文字列を追加してみてください。そのクラスは加算演算子を提供しないので、失敗します。代わりに、括弧で囲むことで、クエリを構築する前に、最初の文字列全体を生成します。

$SMTPSvc = [ADSI]('IIS://' + $hostname + '/smtpsvc/1') 
+0

'$ SMTPSvcです= [ADSI] "IIS:// $ホスト名/ SMTPSVC/1は"'この場合にも動作します。 – Matt

関連する問題