【发布时间】:2012-06-28 15:33:34
【问题描述】:
我正在尝试编写
$x = [System.Net.Dns]::GetHostAddresses($name) 语句写入我的写入主机字符串,但在将函数的结果输入输出时遇到了一些问题。
以下是相关代码:
Import-Module activedirectory
function fu($name)
{
$x = [System.Net.Dns]::GetHostAddresses($name).value
if ($x -ne $null){
Write-Host{ $x }
}
else{
Write-Host{"Null"}
}
}
Get-ADComputer -SearchBase 'OU=CorpServers,DC=corp,DC=com,DC=net' -Server "corp.com.net" -Filter * -Properties * |ForEach-Object{write-host "add filter filterlist=""L2-Windows Servers"" srcaddr=any dstaddr=$(fu $_.Name) description=""$($_.Name)"""}
目前它只是按原样输出字符串,但是当它到达 fu 子表达式时似乎没有正确执行逻辑并且只按字面意思输出“$x”,我的意图是让它输出当前 obj 的 IP foreach-object 语句。
【问题讨论】:
-
[System.Net.Dns]::GetHostAddresses(<<hostname>>) | Get-Member没有显示任何value属性?您可以简单地尝试在您的 ISE / 控制台中首先运行它 -[System.Net.Dns]::GetHostAddresses(<<hostname>>)。 -
您是否打算这样做 - [System.Net.Dns]::GetHostAddresses(">")[0].ToString() in
function fu()? -
将 $x 更改为:
$x = [System.Net.Dns]::GetHostAddresses($name)|select-object IPAddressToString -expandproperty IPAddressToString? -
是的,但它会返回多个值。对吧?
-
好吧,我想从 foreach-object cmd 中调用 fu 函数并为其提供当前的 objs $_.Name,所以我认为它会返回与 obj 连接的单个 IP 地址由其 $_.Name 指定?
标签: function powershell active-directory