【问题标题】:Powershell script to get the cpu utilization , disk Space, MemoryUsage and usersPowershell 脚本获取 CPU 利用率、磁盘空间、MemoryUsage 和用户
【发布时间】:2017-09-15 07:24:09
【问题描述】:

嗨,有人可以帮我获得所需的输出吗?

GC D:\ServerList.txt | % {

$xl = New-Object -ComObject "Excel.Application"
$xl.Visible = $true
$xl.DisplayAlerts = $false #for debugging, no prompts to save, etc.
$ConvertToGB = (1024 * 1024 * 1024)

$wkbk = $xl.Workbooks.Add()
$sheet = $wkbk.WorkSheets.Item(1)
$sheet.Name = "Transposed"
$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)) %"
        "DiskSpace"    = "$("{0:N2}" -f (Get-WmiObject -Class win32_logicaldisk -ComputerName $COMP -Filter "DriveType = 3"| Select-Object "Size","FreeSpace"))"
        #$Comp = ($disk.Size / $ConvertToGB),($disk.FreeSpace / $ConvertToGB)
        "logged_Users" = $Luser
    }
}
Else {

}
$results = Get-Service -Name *bits*| Select Server    #,"CPU usage","Memory usage","DiskFreeSpace","logged Users" 

$column = 1
$row = 1
foreach ($psRow in $results) {
    foreach ($item in $psRow.PSObject.Properties) {
        $sheet.Cells.Item($row, $column) = $item.Name
        $column++
        #$sheet.Cells.Item($row, $column) = $item."CPU","Memory_Usage","DiskSpace","logged_Users"
        $row++
        $column--
    }

} 

}

我得到的输出

Memory_Usage : 68.76 %
CPU_Usage    : 12
Server       : DIN35002781
logged_Users : aanshuma
DiskSpace    : @{Size=250051817472; FreeSpace=164924461056}**

但我想要的输出是:

DiskSpace,127696629760,46401740800
Server,LIN35006176
Memory_Usage,51.22
logged_Users,Boss
CPU_Usage,14

【问题讨论】:

    标签: powershell csv memory-management cpu-usage diskspace


    【解决方案1】:

    我会先将 PSObject 保存到一个变量中,而不是在 DiskSpace 上使用字符串。

    $obj =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)) %"
        "DiskSpace"    = Get-WmiObject -Class win32_logicaldisk -ComputerName $COMP -Filter "DriveType = 3"| Select-Object "Size","FreeSpace"
        #$Comp = ($disk.Size / $ConvertToGB),($disk.FreeSpace / $ConvertToGB)
        "logged_Users" = $Luser
    }
    

    要获得所需的输出,您可以使用:

    Write-Output "DiskSpace, $($obj.DiskSpace.Size), $($obj.DiskSpace.FreeSpace)"
    Write-Output "Server, $($obj.Server)"
    Write-Output "Memory_Usage, $($obj.Memory_Usage)"
    Write-Output "logged_Users, $($obj.logged_Users)"
    Write-Output "CPU_Usage, $($obj.CPU_Usage)"
    

    如果你想要一个 CSV,你可以使用:

    $obj | ConvertTo-Csv
    

    但是我会在 PSObject 的两个属性中将 FreeSpace 和 Size 分开。

    【讨论】:

    • 感谢 Olaf ? 它工作正常,我得到了想要的输出。非常感谢
    猜你喜欢
    • 2014-07-12
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多