【问题标题】:How to store output of an array in a file?如何将数组的输出存储在文件中?
【发布时间】:2016-03-04 00:59:38
【问题描述】:

我有一个小型的 powershell 脚本,可以远程从服务器收集指标。 通常调用函数来收集 CPU / 内存 / HDD 信息。

我从一个文本文件中提取服务器,并为每台机器调用函数。

foreach ($i in Get-Content "C:\Servers.txt")
{{"=========================="; $i + "`n" + "==========================";
 "Number of CPU Cores" ; CPU-Info ; "Memory in GB" ; Memory-Info
  ; "HDDs in GB" ; HDD-Size } 

首先,我尝试使用out-file 对所有内容进行归档,但当然每个新输入都会覆盖我的文件。 有没有办法临时存储输出并以一种好的方式输出文件?

你会推荐什么?也许有更流畅的方法?

【问题讨论】:

  • 您在寻找Out-File -Append吗?还有,CPU-InfoMemory-Info等函数在你不指定任何参数的情况下,如何知道从哪个服务器收集信息?
  • 啊,你是对的,我确实把 $i 放在了函数中,哈哈。谢谢

标签: powershell scripting powershell-2.0 powershell-3.0 powershell-4.0


【解决方案1】:

输出文件将用于什么目的?如果它是供人类消费的,那么 CSV 可能是您最好的选择,因为它易于导入 Excel。如果它是为了准确地表示对象,那么 XML 是一个更好的主意。每种类型都有自己的导出 cmdlet:分别为 Export-CsvExport-Clixml

在使用其中一个 cmdlet 一次性导出所有数据之前,将所有输出添加到数组中可能是一种更好的方法。我通常通过为循环的每次运行创建一个自定义对象来做这种事情:

$OutputFile = 'C:\Output.csv'

$ServerList = Get-Content 'C:\Servers.txt'

$OutputArray = @()

foreach ($i in $ServerList)
{
$ServerObject = New-Object PSObject

Add-Member -InputObject $ServerObject -MemberType NoteProperty -Name 'CPU_Cores' -Value (CPU-Info $i)
Add-Member -InputObject $ServerObject -MemberType NoteProperty -Name 'Memory_GB' -Value (Memory-Info $i)
Add-Member -InputObject $ServerObject -MemberType NoteProperty -Name 'HDD_Size' -Value (HDD-Size $i)

$OutputArray += $ServerObject
}

$OutputArray | Export-Csv -Path $OutputFile

【讨论】:

  • 嘿柯南,谢谢。更有趣的是,我刚刚完成了不使用 Export-csv 的脚本。
【解决方案2】:

虽然问题看起来像是覆盖而不是追加,但您可以ask .Net to provide you 唯一一个临时文件。方法是io.path.GetTempFileName(),它也会创建一个新的零字节文件。像这样,

$tempFile = [io.path]::GetTempFileName()
test-path $tempFile
True
$tempFile
C:\Users\myhomedir\AppData\Local\Temp\tmpDA2E.tmp

还有另一种方法,io.path.GetRandomFileName(),它会为您提供一个cryptographically strong 随机文件名。不像GetTempFileName(),你得到的只是一个名字。文件创建由您决定。

【讨论】:

    猜你喜欢
    • 2013-12-31
    • 2019-01-14
    • 1970-01-01
    • 2016-12-08
    • 2014-09-13
    • 1970-01-01
    • 2019-06-14
    • 2017-10-07
    • 1970-01-01
    相关资源
    最近更新 更多