Я написал скрипт для отображения окна сообщения. Он хорошо работает в PowerShell 5, но не в PowerShell 6. Как я могу заставить его работать?
Сценарий, который я написал (извлечен):
function test
{
[CmdletBinding()]
param([Parameter(Mandatory = $true, Position = 0)][string]$directory)
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName Microsoft.Visualbasic
Add-Type -AssemblyName System.Drawing
#----------------------------
}
Сообщение об ошибке:
Add-Type : Cannot find path 'C:\Users\Owner\System.Windows.Forms.dll' because it does not exist. At C:\Users\Owner\Desktop\sample\trans-search.ps1:8 char:6 + Add-Type -AssemblyName System.Windows.Forms + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Users\Owner\System.Windows.Forms.dll:String) [Add-Type], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.AddTypeCommand
Спасибо за помощь.
Возможный дубликат PowerShell 6 — поддержка библиотек графического интерфейса Windows.
Обратите внимание, что в ps5 вы можете сделать что-то вроде: using assembly System.Windows.Forms; using namespace System.Windows.Forms; [messagebox]::show('hello world')
Может быть, вы можете использовать веб-браузер для отображения вещей.





Эти типы недоступны в PowerShell 6.x. Предполагается, что они станут доступны в PowerShell v7, но их нет в предварительной версии 2.
Большое спасибо, я не могу дождаться PowerShell 7
Я думаю, что они не работали над переносом форм до .NET Core 3.0. Возможно, вы используете старую версию или она еще не полностью портирована. Что нового в .NET Core 3.0 (предварительная версия 6)