18910140161

powershell:Measure-Command向控制台输出良好的响应时间列表;当输出到文本文件时,它的一个非常长的文本字符串

顺晟科技

2021-08-21 11:26:32

272

我发现PowerShell Measure-Command向控制台输出了一个很好的响应时间列表,但当输出到文本文件时,它变成了一个非常长的文本字符串。这是一个问题,因为当用HTML阅读器查看时,它变得很难阅读。今天晚上我已经为这个问题挣扎了很长时间,所以现在把这个发到so。

import-module activedirectory
cls
$myForest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$domaincontrollers = $myforest.Sites | % { $_.Servers } | Select Name
$report = foreach ($DomainController in $DomainControllers) 
{
  $totalmeasurement = 0
  $i = 0
  while ($i -ne $numberoftests)
  {
  $measurement = (Measure-Command {Get-ADUser Administrator -Server $DomainController.name}).TotalSeconds
  $totalmeasurement += $measurement
  $i += 1
  }
  $totalmeasurement = $totalmeasurement / $numberoftests
  "Domain Controller: " + $DomainController.name + ", Response time: " + $totalmeasurement + " seconds"
}

在vanilla环境中运行上述代码时,将产生如下个截图所示的输出:


通过将foreach设置为一个变量,对代码进行了轻微修改(如下所示):

import-module activedirectory
cls
$myForest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$domaincontrollers = $myforest.Sites | % { $_.Servers } | Select Name
$report = foreach ($DomainController in $DomainControllers) 
{
  $totalmeasurement = 0
  $i = 0
  while ($i -ne $numberoftests)
  {
  $measurement = (Measure-Command {Get-ADUser Administrator -Server $DomainController.name}).TotalSeconds
  $totalmeasurement += $measurement
  $i += 1
  }
  $totalmeasurement = $totalmeasurement / $numberoftests
  "Domain Controller: " + $DomainController.name + ", Response time: " + $totalmeasurement + " seconds"
}
$report | Out-String | Out-File $htmlfile_temp -Append  

文件输出最终会出现第二张屏幕截图所示的混乱情况:

我尝试了许多不同的原始代码排列,以输出到格式良好的文件,如张屏幕截图所示,但都无济于事。我已经放弃了,现在把这个问题发到这个论坛上。我很清楚write-host的局限性,这也是我将其输出到HTML文件的众多原因之一。

(此处可找到此帖子的原始代码)


顺晟科技:

  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航