Operations Lab.

PowerShell ISE から呼び出せないコマンド

leave a comment »

PowerShell スクリプトの作成やデバッグに大変便利な PowerShell ISE ですが、PowerShell 上では正常に動作するコマンド(コンソールアプリケーション)が、PowerShell ISE 上では正常に動作しないことがあります。例えば、cmd.exe や diskpart.exe は、PowerShell ISE 上では正常に動作しません。

これらのコンソールアプリケーションは、通常の PowerShell コンソール上では呼び出し、実行が可能ですが、PowerShell ISE 上からは呼び出し、実行ができないようにあらかじめ制限されています。

Windows PowerShell ISE のコマンド ペインで実行できないようにブロックされているコンソールアプリケーションは、 $psUnsupportedConsoleApplications に設定されています。PowerShell ISE 上で変数の値を確認すると、デフォルトでは以下の様になっています。

PS C:\Windows\system32> $psUnsupportedConsoleApplications
wmic
wmic.exe
cmd
cmd.exe
diskpart
diskpart.exe
edit.com
netsh
netsh.exe
nslookup
nslookup.exe
powershell
powershell.exe

cmd.exe を起動しようとすると、エラーが表示されます。

PS C:\Windows\system32> cmd
"cmd" を開始できません。対話型コンソール アプリケーションはサポートされていません。
このアプリケーションを実行するには、Start-Process コマンドレットか、[ファイル] メニューの [PowerShell.exe を起動] を使用してください。
ブロックするコンソール アプリケーションの一覧を表示または変更するには、$psUnsupportedConsoleApplications を使用するか、オンライン ヘルプを参照してください。
At line:0 char:0

"cmd" を開始できません。対話型コンソール アプリケーションはサポートされていません。このアプリケーションを実行するには、Start-Process コマンドレットか、[ファイル] メニューの [PowerShell.exe を起動] を使用してください。

$psUnsupportedConsoleApplications は読み取り専用となっているため、変数に値を直接代入する(上書きする)ことはできません。PowerShell ISE 上で上記以外のコマンドを制限したい場合は、Add メソッドを使用して制限対象のコマンドを追加できます。

PS C:\Windows\system32> $psUnsupportedConsoleApplications.Add("hoge")

PS C:\Windows\system32> $psUnsupportedConsoleApplications
wmic
wmic.exe
cmd
cmd.exe
diskpart
diskpart.exe
edit.com
netsh
netsh.exe
nslookup
nslookup.exe
powershell
powershell.exe
hoge

$psUnsupportedConsoleApplications に含まれるコマンドをスクリプト中で使用したい場合は、Start-Process から呼び出して使用するか、PowerShell ISE ではなく PowerShell コンソール上でスクリプトの動作確認を行う必要がありますので、注意が必要です。

広告

Written by kazu

2013/02/16 @ 00:23

カテゴリー: PowerShell

Tagged with

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。