Powershell是否在阵列中获取repadmin/istg?

Powershell是否在阵列中获取repadmin/istg?,powershell,Powershell,这可能吗 我是powershell的新手,目前正在将vbscript脚本转换为powershell。以下一行命令似乎与整个vbscript的功能完全相同: Repadmin /istg 哪个输出 Repadmin: running command /istg against full DC ST-DC7.somestuff.com Gathering topology from site BR-CORP (ST-DC7.somestuff.com): Site

这可能吗

我是powershell的新手,目前正在将vbscript脚本转换为powershell。以下一行命令似乎与整个vbscript的功能完全相同:

Repadmin /istg
哪个输出

Repadmin: running command /istg against full DC ST-DC7.somestuff.com

Gathering topology from site BR-CORP (ST-DC7.somestuff.com):

               Site                ISTG

  ==================   =================

            Portland              ST-DC4

               Venyu              ST-DC5

           BR-Office              ST-DC3

             BR-CORP              ST-DC7
问题是我需要将此信息(即最后4行)作为包含“Site”和“ISTG”字段的对象返回。我尝试了以下方法:

 $returnValues = Repadmin /istg
 $returnValues
但这并没有返回任何内容(可能是因为Repadmin写出了行,而不是实际返回数据?)


有没有一种方法可以将信息从“Repadmin/istg”获取到数组中?

这里有一种可能的方法,使用正则表达式:

$output = repadmin /istg
for ( $n = 10; $n -lt $output.Count; $n++ ) {
  if ( $output[$n] -ne "" ) {
    $output[$n] | select-string '\s*(\S*)\s*(\S*)$' | foreach-object {
      $site = $_.Matches[0].Groups[1].Value
      $istg = $_.Matches[0].Groups[2].Value
    }
    new-object PSObject -property @{
      "Site" = $site
      "ISTG" = $istg
    } | select-object Site,ISTG
  }
}

您必须开始解析输出的第10项并忽略空行,因为
repadmin.exe
似乎插入了超级换行符(至少PowerShell这么认为)。

尝试$returnValues=[string](repadmin/istg)这确实返回了我需要的信息,但都在一个大的单行字符串中。我想我可以仔细检查并解析它,但我想知道是否有更好的解决方案?对于第一行更好:
$output=repadmin/istg | select-skip 9 |?{![string]::IsNullOrWhiteSpace($|)}
,它只获取包含数据的行,并在开始时跳过多余的9行。实际上,在那一点上,您可以只在?{}中包含您的$匹配,然后通过管道到ForEach来创建自定义对象,这非常快。我一直在努力解决这个问题,因为我张贴,但你击败了我!谢谢