繁体   English   中英

Powershell仅从PSObject返回值

[英]Powershell Return only value from PSObject

我正在使用以下命令获取tracert的状态,目前它将其存储在一个New-Object psobject中,但是我遇到的问题是,当我尝试对Status进行过滤而只想返回成功时,我得到了以下返回值,而不是@ { Status = Success},如何从结果周围删除@ {Status =}?

function Invoke-Trace() {
   param(
   [string[]]$targetIP,
   $BeginHop = 1,
   $EndHop = 30,
   $timeout = 1000,
   [switch]$GetHostname
   )

   $addrtype = [System.Net.Sockets.AddressFamily]::InterNetwork;
   if($v6.ispresent) {
   $addrtype = [System.Net.Sockets.AddressFamily]::InterNetworkV6;
   }

   $targetIPActual = $null;
   if(![net.ipaddress]::TryParse($targetIP, [ref]$targetIPActual)) {
     $target = [net.dns]::GetHostEntry($targetIP);
     $targetIPActual = $target.addresslist | where {$_.addressfamily -eq $addrtype} |       select -First 1
   } else {
     $target = New-Object psobject -Property @{"HostName" = $targetIP.tostring()}
   }

   for($i = $BeginHop; $i -lt $EndHop; $i++) {

   $ping = new-object System.Net.NetworkInformation.ping;
   $pingo = new-object System.Net.NetworkInformation.PingOptions $i, $true;
   $sendbytes = @([byte][char]'a'..[byte][char]'z');
   $pr = $ping.Send($targetIPActual, $timeout, $sendbytes, $pingo);
   try {
       $rtn = New-Object psobject -Property @{
        "IP" = $pr.Address;
        "RoundtripTime" = $pr.RoundtripTime;
        "Status" = $pr.Status;
       }
   } catch {
       $rtn = New-Object psobject -Property @{
        "IP" = "*";
        "RoundtripTime" = $pr.RoundtripTime;
        "Status" = $pr.Status;
    }
}

try {
    if($GetHostname.ispresent) {
        Add-Member -InputObject $rtn -MemberType NoteProperty -Name Hostname -Value ([net.dns]::GetHostEntry($pr.Address).hostname)
    }
} catch{}

$rtn;

#$pr
try { 
    if($pr.Address.tostring() -eq $targetIPActual) { break; }
    } catch{}
  }
}

如果您的$rtn PSObjectPSObject并且您只想返回它的一个属性,则不要返回整个对象。 #$pr上方的行是返回对象的位置,因此您可以这样做:

$rtn.Status

我有点不清楚,为什么您首先要把它放在那个对象中,因为您似乎不想使用它,但是我只是假设您有一个理由,并给您快速的答案。 随时编辑您的问题,并澄清是否有可能遗漏的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM