Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个ip的powershell输出的查询写入条件_Powershell - Fatal编程技术网

具有多个ip的powershell输出的查询写入条件

具有多个ip的powershell输出的查询写入条件,powershell,Powershell,我有一个变量,示例输出显示为10.10.102.83,True 范例 $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所述,如果$a输出带有多个IP(每个

我有一个变量,示例输出显示为10.10.102.83,True

范例

$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所述,如果$a输出带有多个IP(每个输出中的IP可能不同),则脚本应失败

有人能帮我把条件写在这里吗?

试试这个:

$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"

$ISCSI
变量包含多个对象

调用
.IsConnected
时,您一次都没有访问
$ISCSI
——您实际上在阵列中的每个对象上都会得到
.IsConnected
的结果,在这种情况下,该结果是多个
$true
s

PowerShell在打印阵列时的默认行为是在阵列之间打印一个空格,从而产生您在此处看到的输出

您可以使用类似这样的方法来确保在继续之前只有一个对象

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

您可以测试
$ISCSI.Count
是否为
-gt 1
。您能否演示如何分配
$ISCSI
变量?你可能会被powershell创建一个对象数组或只分配一个对象所困扰。是的。这很有效。你能给我解释一下脚本在这里到底做了什么吗