こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PowerShellからPowerShellを呼び出す方法

PowerShellからPowerShellを呼び出す方法

次のバッチファイルと同等の事をPowerShellで行う方法を教えて下さい。

下記のような非常に簡易的なバッチファイルがあるとします。

■ aaa.bat ■
echo test
■ aaa.bat ■


■ bbb.bat ■
aaa.bat > aaa.log
■ bbb.bat ■


■ コマンドプロンプト ■
cmd> aaa.bat ・・・ 下に「test」と出力される
test
cmd> bbb.bat ・・・ ファイルaaa.logに「test」と出力される
■ コマンドプロンプト ■



同じ事をPowerShellでするとすれば

■ aaa.ps1 ■
echo "test"
■ aaa.ps1 ■


■ PowerShellの画面から ■
PS > ./aaa.ps1 ・・・ 下に「test」と出力される
test
PS > ./bbb.ps1 ・・・ ファイルaaa.logに「test」と出力される
■ PowerShellの画面から ■

この時の「bbb.ps1」はどのようになりますか?

投稿日時 - 2010-05-13 16:16:49

QNo.5892397

すぐに回答ほしいです

質問者が選んだベストアンサー

回答番号:No.1 お礼へのアドバイスです。

>「キックして結果を待は待たずに次の処理をする」
>などのバリエーションは可能でしょうか?

使いこなせていませんがPowerShell 2.0ではバックグラウンドジョブが実現されました。下記の@ITの記事などが参考になると思います。

http://www.atmarkit.co.jp/fwin2k/winsv2008r2/03powershell/03powershell_03.html

Windows7で Start-Job, Get-Job, Receive-Jobが働くことを確認しました。

投稿日時 - 2010-05-15 21:43:00

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

PowerShellではコマンドプロンプトと異なり自動的にはカレントフォルダが検索されません。ですから「bbb.ps1」からカレントフォルダの「aaa.ps1」を呼び出したい場合、カレントフォルダを示す .\ を付ける必要があります。

.\aaa.ps1 > aaa.log

私の持っている参考書では、環境変数Pathにカレントフォルダを示す .\ を追加することを推奨しています。

投稿日時 - 2010-05-15 19:07:25

お礼

有難うございます。

パスを付けないと実行しないのはlinuxのようなノリですね。

でも、それだけだと上手く呼び出せない事があり、試しにpowershellと書いてやると動きました。

■ bbb.ps1 ■
powershell ./bbb.ps1
■ bbb.ps1 ■


でも、これって普通の書き方なのでしょうか?

また、
「呼び出して結果を待つ」まではこれで行けていますが、
「待った後、戻り値を受け取る」
あるいは
「待った後、ステータスを拾う」

さらには、
「キックして結果を待は待たずに次の処理をする」
などのバリエーションは可能でしょうか?

投稿日時 - 2010-05-15 19:33:01

あなたにオススメの質問