2017-11-22 7 views
-1

私はその条件を記述する必要が10.10.102.83、真PowerShellの出力のためのクエリの書き込み条件を複数のIPを持つ

$a = $ISCSI.InitiatorPortalAddress+ ',' +$ISCSI.IsConnected 

1) echo $a = 10.10.102.83,True 
2) echo $a = 0.0.0.0 10.30.28.31 ,True True 
3) echo $a = 10.0.0.1 10.30.28.31 ,True True 

として変数、例の出力を示しています。例2または例3で説明したように、IPに複数のIPが含まれている場合(IPは出力ごとに異なる場合があります)、スクリプトは失敗するはずです。

ここに条件を書いてもらえますか?

+1

は '1'を-gt。 '$ ISCSI'変数の割り当て方法を教えてください。 PowerShellは、オブジェクトの配列を作成したり、オブジェクトを1つだけ割り当てたりすることで噛まれる可能性があります。 –

答えて

0

あなた$ISCSI変数は、複数のオブジェクトが含まれています。

あなたが.IsConnectedを呼び出すときは、$ISCSI 1時間にアクセスしていない - あなたが実際にこのような場合には、複数の$true sの配列内のすべてのオブジェクトに.IsConnectedの結果を得ます。

PowerShellのデフォルトの動作は、配列を印刷するときに、それらの間にスペースを入れて印刷することです。その結果、そこに出力されます。

Proceedingの前にオブジェクトが1つしかないことを確認するために、このようなものを使用できます。あなたは `$ ISCSI.Count`があることにテストすることができ

if ($ISCSI.Count -gt 1){ 
    #Throw Error 
} else { 
    $a = $ISCSI.InitiatorPortalAddress+ ',' +$ISCSI.IsConnected 
    #Other Logic 
} 
0

はこれを試してみてください。

$a = "0.0.0.0 10.30.28.31" ,"True True" 
$count=(($a -split ',')[0] -split ' ').Count 

if ($count -gt 1) 
{ 
    throw 'No good!' 
    exit 
} 

"test" 
+0

うん。これはうまくいく。実際にスクリプトがここで何をしているのか説明できますか? – Sandeep

関連する問題