小编Evi*_*cat的帖子

从WinForms带来Powershell-Console

我试图将我的powershell控制台放在前面,即使它被最小化.我找到了以下代码:

function Show-Process($Process, [Switch]$Maximize)
{
  $sig = '
    [DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
    [DllImport("user32.dll")] public static extern int SetForegroundWindow(IntPtr hwnd);
  '

  if ($Maximize) { $Mode = 3 } else { $Mode = 4 }
  $type = Add-Type -MemberDefinition $sig -Name WindowAPI -PassThru
  $hwnd = $process.MainWindowHandle
  $null = $type::ShowWindowAsync($hwnd, $Mode)
  $null = $type::SetForegroundWindow($hwnd) 
}
Show-Process -Process (Get-Process -Id $pid) 
Run Code Online (Sandbox Code Playgroud)

它工作正常,但当我从Button Click事件调用该函数时,控制台不会显示.问题是什么?有没有办法在使用WinForms GUI时将powershell控制台置于前面?

以下是示例GUI代码:

function Show-Process($Process, [Switch]$Maximize)
{
  $sig = '
    [DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, …
Run Code Online (Sandbox Code Playgroud)

forms windows console powershell user-interface

6
推荐指数
1
解决办法
583
查看次数

强制 Powershell 函数返回数组


如何强制 Powershell 函数返回数组?
这个简单的函数例如,如果“C:\Newfolder”仅包含 1 个元素,则它不会返回数组。

function Get-AlwaysArray
{
    $returnArray = gci "C:\New folder"
    Write-Output $returnArray
}
(Get-AlwaysArray).Gettype()
Run Code Online (Sandbox Code Playgroud)

已经有一个线程在这里有一个非常好的赞成答案,但不幸的是,没有一个答案有效。
这是我尝试过的:

function Get-AlwaysArray {
    [Array]$returnArray = gci "C:\New folder"
    Write-Output $returnArray   
}
(Get-AlwaysArray).Gettype()

function Get-AlwaysArray {
    $returnArray = @(gci "C:\New folder")
    Write-Output @($returnArray)   
}
(Get-AlwaysArray).Gettype()

function Get-AlwaysArray {
    $returnArray = @(gci "C:\New folder")
    Write-Output @($returnArray | Where-Object {$_})   
}
(Get-AlwaysArray).Gettype()

function Get-AlwaysArray {
    [Object[]]$returnArray = @(gci "C:\New folder")
    Write-Output @($returnArray | Where-Object {$_})   
}
(Get-AlwaysArray).Gettype()
Run Code Online (Sandbox Code Playgroud)

唯一可行的方法是

function Get-AlwaysArray { …
Run Code Online (Sandbox Code Playgroud)

powershell types return function

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

powershell ×2

console ×1

forms ×1

function ×1

return ×1

types ×1

user-interface ×1

windows ×1