PowerShell:使用输出中的多个值之一

PowerShell:使用输出中的多个值之一,powershell,ip,command-line-interface,Powershell,Ip,Command Line Interface,我能够使用ff获取为我的计算机配置的DNS服务器的IP地址: $DNSServers = Get-DnsClientServerAddress -InterfaceAlias "Ethernet" | select -expand ServerAddresses 输出包含两个不同的IP地址值。如何提取并使用其中一个值作为AD中LDAP查询所用变量的值 例如,如果上述代码的输出是192.168.10.101 172.16.100.201,我应该能够将这些IP地址值中的任何一个传递给LDAP查询代

我能够使用ff获取为我的计算机配置的DNS服务器的IP地址:

$DNSServers = Get-DnsClientServerAddress -InterfaceAlias "Ethernet" | select -expand ServerAddresses
输出包含两个不同的IP地址值。如何提取并使用其中一个值作为AD中LDAP查询所用变量的值

例如,如果上述代码的输出是
192.168.10.101 172.16.100.201
,我应该能够将这些IP地址值中的任何一个传递给LDAP查询代码的变量。

确定数据类型 您编写的命令返回一个数组。您可以通过将其传递到
Out GridView
来查看:

$DNSServers | Out-GridView
或检查类型:

$DNSServers.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
访问数据 可以通过索引访问阵列:

$DNSServers[0]
$DNSServers[1]
etc...
需要注意的是,数组索引从零开始,而不是从1开始

对于每个循环 在循环中:

ForEach ($server in $DNSServers) {
    # Do something with server
    $server
}
带迭代的For循环 或者通过循环中的索引,使用数组的
Count
属性:

for ($i = 0; $i -lt $DNSServers.Count; $i++)
{ 
    $DNSServers[$i]
}
管道 您还可以将对象管道化为For-Each,其简写符号为
%
。循环中的每个元素都分配了内部变量
$\ucode>:

$DNSServers | % {
    # Do something with server ($_)
    $_
}
这不是那么易读,但如果您只是编写一个一次性使用的快速脚本,它会很方便

提示:如果在Powershell ISE中按Ctrl+J,将显示snippets菜单,其中包含此处指定的两种类型的
循环语法的预构建
。但是,要小心,因为
代码段从
$i=1
开始,所以在与数组一起使用时需要更改它。

确定数据类型 您编写的命令返回一个数组。您可以通过将其传递到
Out GridView
来查看:

$DNSServers | Out-GridView
或检查类型:

$DNSServers.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
访问数据 可以通过索引访问阵列:

$DNSServers[0]
$DNSServers[1]
etc...
需要注意的是,数组索引从零开始,而不是从1开始

对于每个循环 在循环中:

ForEach ($server in $DNSServers) {
    # Do something with server
    $server
}
带迭代的For循环 或者通过循环中的索引,使用数组的
Count
属性:

for ($i = 0; $i -lt $DNSServers.Count; $i++)
{ 
    $DNSServers[$i]
}
管道 您还可以将对象管道化为For-Each,其简写符号为
%
。循环中的每个元素都分配了内部变量
$\ucode>:

$DNSServers | % {
    # Do something with server ($_)
    $_
}
这不是那么易读,但如果您只是编写一个一次性使用的快速脚本,它会很方便


提示:如果在Powershell ISE中按Ctrl+J,将显示snippets菜单,其中包含此处指定的两种类型的
循环语法的预构建
。但是,要小心,因为
代码段从
$i=1
开始,所以在与数组一起使用时需要更改它。

请尝试
$DNSServers[0]
$DNSServers[1]
等等!所以这真的很简单。正是需要的=)但是,@mjsqu,你在评论中给出了答案。没有办法把它标记为我一直在寻找的答案。我该怎么做?谢谢。根据mjsqu的评论回答您自己的问题。要点是什么?感谢您的认可,我现在提供了一个更详细的答案。请尝试
$DNSServers[0]
$DNSServers[1]
等等!所以这真的很简单。正是需要的=)但是,@mjsqu,你在评论中给出了答案。没有办法把它标记为我一直在寻找的答案。我该怎么做?谢谢。根据mjsqu的评论回答你自己的问题。要点是什么?谢谢你的认可,我现在已经包括了一个更详细的答案。