CPU & 内存使用脚本
CPU & Memory Usage Script
你好我是 运行 这个脚本又是多个服务器 & 我想让每个特定的服务器名称出现在结果中。但是现在,我可以通过标题 CPU & Memory Usage
了解每个服务器的使用情况。请告诉我如何获取每个服务器名称和结果。
$Output = 'C:\temp\Result.txt'
$ServerList = Get-Content 'C:\temp\ServerNames.txt'
$ScriptBLock = {
$CPUPercent = @{
Label = 'CPUUsed'
Expression = {
$SecsUsed = (New-Timespan -Start $_.StartTime).TotalSeconds
[Math]::Round($_.CPU * 10 / $SecsUsed)
}
}
$MemUsage = @{
Label ='RAM(MB)'
Expression = {
[Math]::Round(($_.WS / 1MB),2)
}
}
Get-Process | Select-Object -Property Name, CPU, $CPUPercent, $MemUsage,
Description |
Sort-Object -Property CPUUsed -Descending |
Select-Object -First 15 | Format-Table -AutoSize
}
foreach ($ServerNames in $ServerList) {
Invoke-Command -ComputerName $ServerNames {Write-Output "CPU & Memory Usage"}
| Out-File $Output -Append
Invoke-Command -ScriptBlock $ScriptBLock -ComputerName $ServerNames |
Out-File $Output -Append
我看到你在 运行 服务器名称上循环($ServerNames 是每次迭代的每个服务器),所以你为什么不使用:
"Working on $ServerNames.." | Out-File $Output -Append
在 "foreach" 语句后的第一行?
无论如何,我认为您可以像这样更改您的脚本:
在脚本块上添加:
Write-Output "CPU & Memory Usage"
hostname | out-file $output -Append # this will throw the server name
一旦你在 Scriptblock 上有了这个,你就可以 运行 像这样:
Invoke-Command -ScriptBlock $ScriptBLock -ComputerName $ServerList
($ServerList 是原始服务器数组,"Invoke-Command" 知道如何处理)。
你好我是 运行 这个脚本又是多个服务器 CPU & Memory Usage
了解每个服务器的使用情况。请告诉我如何获取每个服务器名称和结果。
$Output = 'C:\temp\Result.txt'
$ServerList = Get-Content 'C:\temp\ServerNames.txt'
$ScriptBLock = {
$CPUPercent = @{
Label = 'CPUUsed'
Expression = {
$SecsUsed = (New-Timespan -Start $_.StartTime).TotalSeconds
[Math]::Round($_.CPU * 10 / $SecsUsed)
}
}
$MemUsage = @{
Label ='RAM(MB)'
Expression = {
[Math]::Round(($_.WS / 1MB),2)
}
}
Get-Process | Select-Object -Property Name, CPU, $CPUPercent, $MemUsage,
Description |
Sort-Object -Property CPUUsed -Descending |
Select-Object -First 15 | Format-Table -AutoSize
}
foreach ($ServerNames in $ServerList) {
Invoke-Command -ComputerName $ServerNames {Write-Output "CPU & Memory Usage"}
| Out-File $Output -Append
Invoke-Command -ScriptBlock $ScriptBLock -ComputerName $ServerNames |
Out-File $Output -Append
我看到你在 运行 服务器名称上循环($ServerNames 是每次迭代的每个服务器),所以你为什么不使用:
"Working on $ServerNames.." | Out-File $Output -Append
在 "foreach" 语句后的第一行?
无论如何,我认为您可以像这样更改您的脚本: 在脚本块上添加:
Write-Output "CPU & Memory Usage"
hostname | out-file $output -Append # this will throw the server name
一旦你在 Scriptblock 上有了这个,你就可以 运行 像这样:
Invoke-Command -ScriptBlock $ScriptBLock -ComputerName $ServerList
($ServerList 是原始服务器数组,"Invoke-Command" 知道如何处理)。