スクリプトブロック内に追加機能の機能Begin, Process, End
を使用することはできますか?例えばスクリプトブロックでBegin、Process、Endを使用する
私は、次のスクリプトブロックしました:私は、私がブロックを変更するスクリプトブロックの詳細出力を制御できるようにしたいので
$startStopService = {
Param(
[bool] $startService)
if ($startService){
...
Start-Service "My-Service"
}
else {
Stop-Service "My-Service"
}
}
を:
$startStopService = {
Param(
[bool] $startService)
Begin {
$oldPreference = $VerbosePreference
$VerbosePreference = $Using:VerbosePreference
}
Process {
if ($startService){
...
Start-Service "My-Service"
}
else {
Stop-Service "My-Service"
}
}
End {
# Restore the old preference
$VerbosePreference = $oldPreference
}
}
scriptblockはコマンドレットではありませんが、ここではBegin, Process, End
を使用できますか?エラーが発生したかどうかにかかわらず、VerbosePreference
が古い値に復元されることを望みます。もちろん、try{}finally{}
を使用することもできますが、Begin, Process, End
はより直感的です。
Thxを
を私はあなたの答え( 'CmdletBinding')の第二の選択肢を探していました。簡単な質問: 'CmdletBinding'も' Invoke-Command'でも動作しますか? 'Invoke-Command -session $ remoteSession -scriptblock $ startStopService -verbose'としましょう。 – Moerwald
@Moerwald短いバージョンでは、ドキュメントの[[CommonParameters]] '(https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell)に準拠する必要があります。コア/呼び出しコマンド)。しかし、私はそれを試してみるとうまくいきません。検索しましたが、あなたは既に読んでいる[this post](https://stackoverflow.com/questions/16197021/how-to-write-verbose-from-invoke-command)を見つけました。これはこれをバグと言います。それが事実かどうか、または私たちがやっているやり方に間違いがあるかどうかはわかりません。 – gms0ulman
答えのためのThx。はい、投稿を読んだことがあります。それは約3歳なので、私はそれの周りに良い方法があるかもしれないと思った。 – Moerwald