2017-09-13 25 views
-1

私はディスク容量の詳細を取得するために別のコードを持っていますが、ディスク使用量、ディスク空き容量、CPU使用率を取得するためにこれらの2つのプログラムをどのようにマージすることができます。PowerShellスクリプトをマージして、ディスクの空き容量、ディスクの空き容量、CPU使用率、およびメモリ使用率を1つのcsvファイルで取得するにはどうすればよいですか?

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 

I持って、両方のコードのための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" 

出力できますPowerShellで書かれた1つの以上のファイル:

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 
+0

あなたは 'レポート$(GET-日-F dd_MM_yyy_hhmm)を追加することによってそれを行うことができます**はDiskSpaceUsage .CSV **ファイルに.csv'と-forceパラメーターを使用します。しかし、両方のcsvsが異なる数の列を持っているので、見栄えが良くありません。 –

答えて

-1

、これを行う配列を作成し、あなたが行に格納したい性質を持っているそれぞれのカスタムオブジェクト、とのことをロードするために。

$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 
+0

ちょっとメモ:この状況で '$ array'のスコープ(' script: ')を指定する必要はないと思っています – sodawillow

+0

@sodawillow私はちょうど、これを使用することができます。それが私が落選した理由ですか? –

+0

私はdownvoteしませんでした。しかし、あなたの答えを読んで、あなたの意図は 'Function1'と' Function2'ではっきりしておらず、構文が間違っていると確信しています(あるいは 'function'キーワードがない宣言です)。 – sodawillow

関連する問題