繁体   English   中英

Powershell:Windows Server 2008文件夹浏览器对话框为空白,但不在ISE中

[英]Powershell: Windows Server 2008 folder browser dialog blank, but not in ISE

我相信在Windows更新之后,我的对话框几乎变成了灰色,几乎完成了我的Powershell脚本。 理想情况下,这意味着打开一个对话框,用户可以在其中选择要映射的文件路径。 在服务器2012上工作正常。

奇怪的是,它完全可以在Powershell ISE中工作,但是当脚本仅通过批处理文件执行时,它就不再工作。 这是脚本中的代码块:

Function Get-Folder($initialDirectory)
{
    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")

    $foldername = New-Object System.Windows.Forms.FolderBrowserDialog
    $foldername.rootfolder = "MyComputer"

    if($foldername.ShowDialog() -eq "OK")
    {
        $folder += $foldername.SelectedPath
    }
    return $folder
}

这是bat文件中的执行代码:

start "" /d "C:\ASD\scripts" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""C:\ASD\scripts\PBridge.ps1""' -Verb RunAs}"

我真的不确定什么地方出了问题,但是我倾向于使用批处理文件执行powershell脚本中的一个参数,因为它可以在ISE中使用。

取决于您运行的Powershell的版本,可能是由于ISE在单线程单元中运行,而标准powershell.exe默认为多线程单元,并且许多情况下都需要单线程单元(所有?)GUI任务。 假设是这种情况,您应该可以通过添加-STA来解决问题。 除了您用来启动脚本的代码看起来过于复杂之外,以下内容应该可以正常工作并且更容易阅读。

Powershell.exe -STA -NoProfile -ExecutionPolicy Bypass -File "C:\ASD\scripts\PBridge.ps1" -Verb RunAs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM