質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Q&A

解決済

3回答

28052閲覧

EXIT した値を $LASTEXITCODE で確認すると 1 となっている

jinru

総合スコア2

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

0グッド

1クリップ

投稿2020/11/13 00:40

編集2020/11/13 00:44

[やりたいこと]

  1. bat から test.ps1 を実行する。
  2. test.ps1 からの戻り値を %ERRORLEVEL% で『10』を取得したい。
    ※%ERRORLEVEL% の値が、期待した値『10』とならなかったので、
    下記のようにテストコマンドを作成した結果、
    $LASTEXITCODE に『1』が入っていたことが判明

[わかったこと]
EXIT 0 の場合は、$LASTEXITCODE に、『0』が入る
EXIT 1 以上の場合は、$LASTEXITCODE に、『1』が入る

[質問したいこと]
・これは仕様なのでしょうか?
・回避方法がわかる方がいらっしゃいましたらご教示ください。

[環境]
●win10 home 64bit

●ps version
PS C:\WINDOWS\system32> $PSVersiontable
Name Value


PSVersion 5.1.18362.1110
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.18362.1110
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

PowerShell

1test.ps1の中身 2 3exit 10 4

PowerShell

1実行結果 2 3PS > PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& 'c:\work\test.ps1'" 4PS > $lastexitcode 5   1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

PowerShell

1exit 10

実行するスクリプトを上記 untitled.ps1 とします。
-Command ではなく -File を使ってみてください。

cmd

1powershell -File untitled.ps1 2echo %errorlevel%

結果

10

投稿2020/11/13 04:03

編集2020/11/13 04:05
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jinru

2020/11/13 04:09

ありがとうございます。 試してみます。
jinru

2020/11/15 00:26 編集

ご指摘頂きましたように、 -file にしたら解決できました。 ありがとうございました。
guest

0

一筋縄にはいかないようです。
個人ブログですが
参考url

powershell(呼び出し側)

1powershell 'c:\work\test.ps1;exit $LastExitCode'

投稿2020/11/13 01:07

satocha

総合スコア336

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jinru

2020/11/13 01:43

ご確認ありがとうございます。 実際にプロンプトから実行してみた結果となります。 > powershell 'c:\work\test.ps1;exit $LastExitCode' c:\work\test.ps1;exit $LastExitCode > echo %errorlevel% 0 何が悪いのでしょうか? ご教示頂けますと幸いとなります。
guest

0

ここで取得している$lastexitcodeは、PowerShell自体が返す終了コードです。test.ps1が0でない終了コードで返ってきたので、「PowerShellは実行に失敗した」ということを意味する1を返します。

回避方法がわかる方がいらっしゃいましたらご教示ください。

PowerShellコマンドを使わず、直接test.ps1を実行すればいいのではないかと考えます。

投稿2020/11/13 00:55

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jinru

2020/11/13 01:41

ご確認ありがとうございます。 batから実行したい関係上、powershellコマンドで実行しないといけないものと感じております。 何か策があればご教示頂けましたら嬉しいです。
maisumakun

2020/11/13 02:00

どうして.batとPowerShellを組み合わせる必要があるのでしょうか?
jinru

2020/11/15 00:31 編集

現状の設計に合わせたいためです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問