3

我正在尝试将 $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 中输出当前 obj 的 IP-对象陈述。

4

3 回答 3

1

这是因为您放入$x了大括号{}

做就是了Write-Host $x

于 2012-06-28T17:07:32.673 回答
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
于 2012-06-28T19:07:03.363 回答
0

[System.Net.Dns]::GetHostAddresses(<<hostname>>) | Get-Member不显示任何价值属性?

你可以试试这个功能。

于 2012-06-28T16:07:22.007 回答