输出函数结果在powershell write-host中

时间:2012-06-28 15:33:34

标签: function powershell active-directory

我试图写出结果 $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。

3 个答案:

答案 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

拉斯维加斯再次给出了好结果。 returnwrite-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功能。