Ray*_*and 2 powershell scripting powershell-2.0 powershell-3.0 powershell-4.0
我有一个小的 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 }
Run Code Online (Sandbox Code Playgroud)
首先,我尝试使用 outfile 所有内容,out-file但当然每个新输入都会覆盖我的文件。有没有办法临时存储输出并以一种好的方式输出它?
你会推荐什么?也许有更顺畅的方式来做到这一点?
小智 5
输出文件将用于什么目的?如果它是供人类消费的,那么 CSV 可能是您最好的选择,因为它易于导入 Excel。如果是为了准确表示对象,那么 XML 是一个更好的主意。这些类型中的每一种都有自己的导出 cmdlet:Export-Csv和Export-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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16742 次 |
| 最近记录: |