プロが教える店舗&オフィスのセキュリティ対策術

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」はどのようになりますか?

A 回答 (2件)

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



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

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

http://www.atmarkit.co.jp/fwin2k/winsv2008r2/03p …

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

PowerShellではコマンドプロンプトと異なり自動的にはカレントフォルダが検索されません。

ですから「bbb.ps1」からカレントフォルダの「aaa.ps1」を呼び出したい場合、カレントフォルダを示す .\ を付ける必要があります。

.\aaa.ps1 > aaa.log

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

有難うございます。

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

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

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


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

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

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

お礼日時:2010/05/15 19:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!