Вы можете использовать командлет Add-Type
, чтобы скомпилировать класс C # на лету и импортировать тип. Таким образом, вы можете просто записать код C # для взаимодействия с встроенной функцией TaskDialog, а затем использовать его из PowerShell. Например, вы можете использовать эту библиотеку из CodeProject . Постройте его и затем используйте
Add-Type -File TaskDialog.dll
Затем можно заново создать образцы, показанные в статье.
$taskDialog = New-Object Microsoft.Samples.TaskDialog
$taskDialog.WindowTitle = "My Application"
$taskDialog.MainInstruction = "Do you want to do this?"
$taskDialog.CommonButtons = [Microsoft.Samples.TaskDialogCommonButtons]::Yes -bor [Microsoft.Samples.TaskDialogCommonButtons]::No
$result = $taskDialog.Show()
if ($result -eq 6)
{
# Do it.
}
Однако я заметил, что PowerShell не может найти точку входа в DLL общего управления. Не слишком много в этом ключе, возможно, объявлению P / Invoke в коде C # потребуется запрос конкретной версии или около того, чтобы это работало. Сожалею. Возможно, вы все еще можете инкапсулировать необходимые вещи в небольшое приложение командной строки, которое затем сможете запустить. Не идеальный, но, возможно, самый простой маршрут.