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

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

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

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

Q&A

解決済

2回答

4061閲覧

(powershell)デフォルトでロードされるアセンブリ

iMasa

総合スコア22

PowerShell

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

0グッド

0クリップ

投稿2015/01/05 21:55

以下2つの実行画面より同じスクリプトを実行すると、②だけエラーになります。

①Windows PowerShell ISE(開発ツール)のコマンドペインウインドウ
②PowerShell実行画面(PowerShell.exeコンソール)

調べたところ、アセンブリの参照不足ということで、スクリプトに以下の記述を入れると実行できました。
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")

スクリプトはファイル選択ダイアログを用いる単純なプログラムです。

①、②でデフォルトでロードされるアセンブリが異なるのは何故でしょうか?
①、②が合っていた方が開発→実行とスムーズなので、合わせる方法があればデメリットも含めて教えて頂きたいです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

以下のコマンドでコンソール、ISEそれぞれロードされたアセンブリを確認してみてください。

lang

1[Appdomain]::CurrentDomain.GetAssemblies() | %{$_.GetName().Name}

ほとんどの差分がGUIに関連するものかISE自体に関連するものです。
PowerShell.exeコンソールではGUIを利用することを想定していないと思います。
通常、CUIであればファイルの選択は引数でパスを指定します。

profileを作成し、必要なAssemblyをロードしてあげるか、スクリプトの先頭でロードしてあげれば揃えることはできます。
デメリットはパッと思いつきませんが起動時間は長くなると思います。

ロードされるAssembly以外ではバージョンにもよりますがMTA、STAの違いがあるので気をつけてください。
.NETダイアログが表示されずスクリプトが止まる問題の対策

投稿2015/01/06 02:03

sho_cs

総合スコア3541

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

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

iMasa

2015/01/06 04:42

非常に分かりやすい説明ありがとうございました。 大変勉強になりました。
guest

0

投稿ミス

投稿2015/01/06 04:42

iMasa

総合スコア22

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問