我有一个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)
}
答案 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"