PowerShell 6 - support for Windows GUI libraries

后端 未结 3 1307
谎友^
谎友^ 2021-01-22 02:17

I understand that the new PowerShell 6/core lacks support for Windows GUI libraries, I have developed some important projects in PS-5.1 using the Windows.Forms

3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-01-22 03:17

    It's a russian method, but you can use for the non-PowerShell Core compatible part the default PowerShell "powershell.exe" instead of PowerShell Core "pwsh.exe" in your PowerShell Core script:

    Test.ps1:

    <# Here you start your script code with your called PowerShell/PowerShell Core: #>
    $PSVersionTable
    chcp.com 65001;
    
    <# Pause the PowerShell Core code execution and run here a temporary default PowerShell session 
    (Non-PowerShell Core) for the Non-PowerShell Core compatible code part: #>
    powershell -NoProfile -ExecutionPolicy Bypass -Command {
    $PSVersionTable
    chcp.com 65001;
    
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing");
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms");
    
    $objForm = New-Object System.Windows.Forms.Form;
    
    [void] $objForm.ShowDialog();
    
    <# Exit the temporary default Non-PowerShell Core session: #>
    exit
    }
    
    <# And continue here the PowerShell Core script code #>
    $PSVersionTable
    

    This works fine for me with Visual Studio Code and also CLI-only execution with System PowerShell (currently: v5.1) and with the PowerShell Core (currently: v6.1.2).

    It's not the best solution and Windows only, but a workaround for Windows systems with installed PowerShells.

提交回复
热议问题