我试图写出结果
$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"从字面上看,我的目的是让它在foreach-object语句中输出当前obj的IP。
答案 0 :(得分:1)
这是因为您将$x
放在大括号{}
中。
只需Write-Host $x
答案 1 :(得分:1)
我扩展了一些解释代码,但试试这个:
function fu($name)
{
$res = $null
$x = [System.Net.Dns]::GetHostAddresses($name)
if ($x -ne $null)
{
$res = $x
}
return $res
}
$a = fu "localhost"
$a
$a.gettype().fullname
它做你想要的,$ a是一个数组。但您必须了解以下函数会产生不同的结果
function fu($name)
{
$res = $null
$x = [System.Net.Dns]::GetHostAddresses($name)
if ($x -ne $null)
{
$res = $x
}
Write-Host $res
}
Clear-Host
$a = fu "localhost"
$a
$a | Get-Member
拉斯维加斯再次给出了好结果。 return
和write-out
都在函数的输出中写入数据。 Write-host
只需写信给主持人。
function fu($name)
{
$res = $null
$x = [System.Net.Dns]::GetHostAddresses($name)
if ($x -ne $null)
{
$res = $x
}
Write-output $res
}
Clear-Host
$a = fu "localhost"
$a
$a | Get-Member
答案 2 :(得分:0)
[System.Net.Dns]::GetHostAddresses(<<hostname>>) | Get-Member
没有显示任何值属性?
您可以尝试使用this功能。