我能够使用ff获取为我的计算机配置的DNS服务器的IP地址:
$DNSServers = Get-DnsClientServerAddress -InterfaceAlias "Ethernet" | select -expand ServerAddresses
输出包含两个不同的IP地址值。如何提取这些值之一并将其用作AD中用于LDAP查询的变量的值?
例如,如果以上代码的输出为192.168.10.101 172.16.100.201
,则我应该能够将这些IP地址值之一传递给LDAP查询代码的变量。
答案 0 :(得分:3)
您编写的命令将返回一个数组。您可以通过将其传递到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
}
或使用数组的Count
属性通过循环索引:
for ($i = 0; $i -lt $DNSServers.Count; $i++)
{
$DNSServers[$i]
}
还可以将对象通过管道传递给For Each,为此的简写形式为%
。循环中的每个元素都被分配了内部变量$_
:
$DNSServers | % {
# Do something with server ($_)
$_
}
这不是那么容易理解,但是如果您只是编写一个一次性的快速脚本,那么它就很方便。
提示:如果您在Powershell ISE中按Ctrl + J,将打开摘要菜单,其中包含在此指定的两种类型的预构建for
循环语法。但是,请注意,由于for
代码段始于$i = 1
,因此在与数组一起使用时需要进行更改。