我正在准备一个脚本,它需要使用与脚本相同文件夹中的一些图像。图像将显示在 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,但我想要定义一次 - FromFile 的默认位置 - 然后无论我以何种方式运行它,都只需简单的文件名即可.
要更改什么以使默认文件读取路径与我的脚本位置相同?