iimuz
1/24/2018 - 10:44 AM

Logging CPU performance.

Logging CPU performance.

<#
.SYNOPSIS
CPUログを取得する。終了方法はCtrl+C。

.DESCRIPTION
アプリケーション実行において観測が必要な最低限のログを取得します。
CPUログを取得する。終了方法はCtrl+C。

.PARAMETER name

データを取得するプロセス名(exeを除いた部分)を記載します。

.PARAMETER duration

データ取得間隔を記載します。(単位は秒)

.PARAMETER out

ファイル出力する場合のファイルパスを記載します。
設定されない場合は、コンソールに出力します。

.INPUTS
None. This script does not correspond.

.OUTPUTS
System.Int32
If success, this script returns 0, otherwise -1.

.EXAMPLE
.\perftype_proc.ps1

ログデータをコンソールに出力します

.EXAMPLE
.\perftype_proc.ps1 -name hoge -out hoge.csv

プロセス名hogeのデータをhoge.csvに出力します。
#>

[CmdletBinding(
  SupportsShouldProcess=$true,
  ConfirmImpact="Medium"
)]
Param(
  $name = 'hoge',
  $duration = 1,
  $out = ''
)

# 出力するログデータ
$LOG_PROC = @(
  '-y',
  "\Process(${name})\Private Bytes",
  "\Process(${name})\Working Set",
  "\Process(${name})\% Processor Time",
  "\Process(${name})\Handle Count",
  "\Process(${name})\IO Write Bytes/sec"
)

# ログファイルの出力設定
$outarg = @()
if ($out -Ne '') {
  if ((Test-Path $out) -Eq $True) {
    $overwrite = Read-Host -Prompt "Output file exist: ${out}. overwrite?(y/n)"
    if ($overwrite -Ne 'y') {
        exit 0
    }
  }

  $outarg = @('-o', $out)
}

typeperf -si $duration $LOG_PROC $outarg

exit 0