スクリプトと同じフォルダーからいくつかの画像を使用する必要があるスクリプトを準備しています。画像は WinForms GUI に表示されます。
$imgred = [System.Drawing.Image]::FromFile("red.png")
クリックするだけでフォルダーから ps1 スクリプトを手動で実行すると、画像が読み込まれて表示されます。残念ながら、これをどのようにセットアップしたか正確には覚えていませんが、できる限り、ps1 ファイルに使用するデフォルトのプログラムにすぎませんでした。cmd ファイルからスクリプトを実行すると (cmd ウィンドウを非表示にするため)、スクリプトも読み込まれます。
しかし、Powershell IDE で開いて実行すると、エラーが発生し、GUI にアイコンが表示されません。Powershell で開くと、読み込みにも失敗します。
私が見つけることができるこれらの実行モードの唯一の違いは次のとおりです。
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$scriptPath #always same, the location of script
(Get-Location).Path #scriptlocation when icons loaded, system32 folder when unsuccessful load
cd $scriptPath を実行するときと同じ動作であるため、現在のフォルダーが問題のあるフォルダーではない可能性が高くなります。
各ファイル読み取り行 (FromFile) に $scriptPath/red.png を記述できることはわかっていますが、それを 1 回 (FromFile のデフォルトの場所) 定義してから、実行方法に関係なく単純なファイル名を機能させることが必要です。 .
デフォルトのファイル読み取りパスがスクリプトの場所と同じになるようにするには、何を変更すればよいですか?