次のように、エイリアスにバインドされた PowerShell スクリプトに多数の os 関数があります。
function Run
{
# somethin that takes a while
}
set-alias r Run
各通話の時間を測定したいと思います。Stopwatch
それを行うには、次のように .NET を作成し、開始し、指定されたアクションを実行し、時間を停止Stopwatch
して時間を出力する別の関数を使用したいと思います。
function Crono($action)
{
$sw = [Diagnostics.Stopwatch]::StartNew()
& $action
$sw.Stop()
Write-Host "> Operation done in: " + $sw.Elapsed;
}
set-alias r Crono(Run)
ただし、このエイリアスは次のエラーをスローします。
Set-Alias : 引数 'System.Object[]' を受け入れる位置パラメーターが見つかりません。At ...\script.ps1:85 char:10 + set-alias <<<< r Crono(Run) + CategoryInfo : InvalidArgument: (:) [Set-Alias], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell. Commands.SetAliasCommand
それは可能ですか?他に方法はありますか?
ありがとう。
編集:
返信ありがとうございます。受け取ったフィードバックを基に、次のように作成しました。
function CronoRun()
{
Crono(Run);
}
set-alias r **CronoRun**
しかし今、Run
関数が.bat
ファイルを呼び出している場合、スクリプトで何が起こっているかを「解釈」しようとするため、おそらくRun
メソッドがファイル内で実行される方法に関連して、いくつかの例外がスローされCrono
ます。何か案が?