更新日:2019/06/11
Powershell では workflow 機能により複数のジョブを実行することが可能です。ただしworkflowでサポートされていない機能は InlineScript ブロック内で実行する必要があります。
InlineScript で戻り値を戻す方法を紹介します。
return を使用して戻すことが可能です。
workflow myfunc
{
ForEach -parallel ($i in 1..3)
{
$retvalue=InlineScript
{
return 99
}
write-output ("Retvalue:" + $retvalue)
}
}
myfunc
あるいはコマンドレットの戻り値として設定することも可能です。以下の例ではサービス名に"LanmanWorkstation"が含まれているものを戻り値として戻しています。
workflow myfunc
{
ForEach -parallel ($i in 1..3)
{
$retvalue=InlineScript
{
Get-Service | where-object {$_.name -like '*LanmanWorkstation*'} | select -ExpandProperty name
}
write-output ("Retvalue:" + $retvalue)
}
}
myfunc
他の ps1ファイルからの戻り値
他のファイルを呼びだし、そのファイルの戻り値をチェックしています。
test.ps1 からの戻り値は $LASTEXITCODE に入るので、その値を InlineScript 内で return によりworkflow に戻しています。
workflow myfunc
{
ForEach -parallel ($i in 1..3)
{
$retvalue=InlineScript
{
c:\scripts\test2.ps1
return $LASTEXITCODE
}
write-output ("Retvalue:" + $retvalue)
}
}
myfunc
呼ばれる ps1ファイルでは以下のように戻り値を戻しています。
[c:\scripts\test.ps1]
exit 99
以下のバージョンで確認しました。
PS C:\WINDOWS\system32> ($PSVersionTable)["PSVersion"]
Major Minor Build Revision
----- ----- ----- --------
5 1 17134 407
[Powershell FAQ トップへ]
[FAQ CENTER トップ]
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018