如何输出到剪贴板

时间:2019-05-18 16:56:59

标签: powershell

我有一个3列的GUI列表视图(启用了FullRowSelect) 我想使用“复制”按钮将每行的3列复制到剪贴板中,以便每行都有一个新行。

但是发生了什么事,我将每行的3列连接成一个字符串。

请注意,Write-Host主机可以帮助我了解发生了什么,这是PowerShell中无控制台GUI应用程序的一部分

我试过通过输出字符串管道$ output |剪辑和其他,但总能得到同一行中相同结果。 我敢肯定这可能很简单!我的PS技能只是基本知识! 请有人能指出正确的方向吧:)

Function Copy2ClipBoard {

    foreach ($line in $OutputlistView.SelectedItems) { 

        $allitems = ($line.SubItems[0].Text + " , " + $line.SubItems[1].Text + " , " + $line.SubItems[2].Text)
        $Output += $allitems
        Write-Host $allitems

    }
    Write-Host ""
    Write-Host $Output
    [System.Windows.Forms.Clipboard]::SetText($Output)
}

2 个答案:

答案 0 :(得分:1)

由于PowerShell 6不提供此cmdlet,因此只能在PowerShell 5.x中使用...

您可以使用´Set-Clipboard` cmdlet。

Function Copy2ClipBoard {

# Clear the clipboard
Set-Clipboard
foreach ($line in $OutputlistView.SelectedItems) { 

    $allitems = ($line.SubItems[0].Text + " , " + $line.SubItems[1].Text + " , " + $line.SubItems[2].Text)
    $Output += $allitems
    Set-Clipboard -Value $allitems -Append
    Write-Host $allitems

}
Write-Host ""
Write-Host $Output
}

您可以通过Get-Clipboard检查剪贴板。

希望有帮助。

答案 1 :(得分:0)

您的问题不喜欢clip

  

但是总会得到同一行中相同结果的结果。

那是因为您只是在构建一个逐渐变长的字符串,而不是按照您认为的那样不是构建一个数组。当您执行$Output += $allitems时,您只是将$allitems字符串添加到$output中,中间有一个空格。 Moerwalds solution通过使用-Append的{​​{1}}参数来解决这个问题。

实际上,您可以采用以下几种方法之一处理输入字符串。最简单的方法是将视频插入剪辑中,您也可以使用类似Set-Clipboard

-join "`r`n"