脚本没有在控制台中第一次运行,之后会运行

时间:2016-08-28 21:39:06

标签: powershell

希望你可以提供帮助,因为我已经没有想法,而且我认为这是因为我不能正确理解PowerShell。

我读了这个系列; https://foxdeploy.com/2016/05/17/part-v-powershell-guis-responsive-apps-with-progress-bars/并尝试做同样的事情,然后我发现我无法通过打开普通的PowerShell控制台(非ISE)并执行来调用我的脚本。\ script.ps1

我还注意到我不能对这里的示例脚本做同样的事情;

https://github.com/1RedOne/BlogPosts/blob/master/GUI%20Part%20V/PowerShell_GUI_Template.ps1

然而,它确实在第二次运行,之后每次运行?例如,如果你这样做

.\script.ps1 (doesn't work)
.\script.ps1 (works)
.\script.ps1 (works)
etc...

但如果你这样做

powershell .\script.ps1 (doesn't work)
powershell .\script.ps1 (doesn't work)

但是,如果你关闭ISE,再次打开它并运行它第一次运行的脚本吗?

我真的不知道造成这种情况的原因。

有没有人有任何想法?

如果你想看到这只是从github链接复制,因为那个问题和我一样。

1 个答案:

答案 0 :(得分:3)

问题是由于GitHub脚本中的第39-41行:

$syncHash.Window=[Windows.Markup.XamlReader]::Load( $reader )

[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')

正如您所看到的,在调用 XamlReader.Load()之后,才会将presentationframework.dll加载到应用域中。

脚本的其余部分取决于此调用的输出,因此整个过程都失败了。

第二次,presentationframework程序集已加载,因此调用成功并正确创建Window。