如何合并PowerShell脚本以在一个csv文件中获取磁盘已用空间,磁盘空闲空间,cpu利用率和内存利用率?
我有一个单独的代码来获取磁盘空间的详细信息,我如何合并这两个程序来获取磁盘使用情况,磁盘空闲空间和cpu利用率,以便我将获得所有输出在一个csv文件中。如何合并PowerShell脚本以在一个csv文件中获取磁盘已用空间,磁盘空闲空间,cpu利用率和内存利用率?
Get-WmiObject -Class Win32_LogicalDisk -ComputerName "PhatuggiKaDabba" |
Where-Object {$_.DriveType -eq 3} |
Select-Object DeviceID, Description,`
@{"Label"="DiskSize(GB)";"Expression"={"{0:N}" -f ($_.Size/1GB) -as [float]}}, `
@{"Label"="FreeSpace(GB)";"Expression"={"{0:N}" -f ($_.FreeSpace/1GB) -as [float]}} |
Export-CSV 'D:\code\DiskSpaceUsage .csv' -noType
我有写入的powershell一个多个文件,让CPU利用率,存储器使用和用户
GC D:\ServerList.txt | % {
$Comp = $_
If (Test-Connection $Comp -Quiet){
$Luser = (Get-WmiObject -class win32_process -Filter "Name='Explorer.exe'" -ComputerName $Comp |
% {$_.GetOwner().User} | Sort-Object -Unique) -join ","
$Mem = GWMI -Class win32_operatingsystem -computername $COMP
New-Object PSObject -Property @{
Server = $Comp
"CPU usage" = "$((GWMI -ComputerName $COMP win32_processor | Measure-Object -property LoadPercentage -Average).Average) %"
"Memory usage" = "$("{0:N2}" -f ((($Mem.TotalVisibleMemorySize - $Mem.FreePhysicalMemory)*100)/ $Mem.TotalVisibleMemorySize)) %"
"Total FreeSpace" = "$("{0:N2}" -f ((Get-WmiObject -Class win32_logicaldisk -ComputerName $COMP -Filter "DriveType = '3'" | Measure-Object -property FreeSpace -Sum).Sum /1GB)) GB"
"logged Users" = $Luser
}
}
Else{
"" | Select @{N="Server";E={$Comp}},"CPU usage","Memory usage","Total FreeSpace","logged Users"
}
}| Select Server,"CPU usage","Memory usage","Total FreeSpace","logged Users" |
Export-Csv "D:\code\report$(Get-Date -F dd_MM_yyy_hhmm).csv"
输出两者的代码:
1.
DeviceID Description DiskSize(GB) FreeSpace(GB)**
C: Local Fixed Disk 230.21 67.33
D: Local Fixed Disk 222.94 79.15
2.
Server CPU usage Memory usage Total FreeSpace logged Users**
Boss'Pc 48% 48.21% 146.48 GB Boss
为了做到这一点,创建一个数组,并加载自定义对象,每个对象都有你想要的行中存储的属性。
$script:array = @()
$computerList |% {
$ob = New-Object System.Object
Function1 {
$ob | Add-Member -type noteProperty -Name CPU -Value $_.cpu
}
Function2 {
$ob | Add-Member -type noteProperty -Name DISKUSE -Value $_.disk
}
$script:array += $ob
}
$script:array | Export-CSV file.csv
只是一个注释:我不认为你需要在这种情况下为'$ array'指定作用域('script:') – sodawillow
@sodawillow我只是为了安全起见,因为我不确切知道如何这可以使用。这就是为什么我被低估了吗? –
我没有downvote。但重新阅读你的答案,你的'Function1'和'Function2'的意图不清楚,我敢肯定你的语法错了(或者这些是缺少'function'关键字的声明)。 – sodawillow
你可以做到这一点通过附加'$报告(获取最新-F dd_MM_yyy_hhmm).csv'到** DiskSpaceUsage的.csv **文件,并使用强制参数。但是因为两个cvs的列数不同,所以它看起来不漂亮。 –