Преобразуйте Получать-буфер-обмена PowerShell Keith Hill и Буфер обмена набора к сценарию PSM1

Нет, селектор «предыдущего сиблинга» отсутствует.

В соответствующей заметке ~ используется для общего брака-последователя (это означает, что элемент появляется после этого, но не обязательно сразу после) и является селектором CSS3. + для следующего родного брата и является CSS2.1.

См. Комбинированный смежный блок-класс из Селектора уровня 3 и 5.7 Смежные селекторные ролики из Каскадные таблицы стилей Уровень 2 Редакция 1 (CSS 2.1) Спецификация .

11
задан Eric Schoonover 14 October 2009 в 23:59
поделиться

4 ответа

TextBox не требует переключателя -STA.

function Get-ClipBoard {
    Add-Type -AssemblyName System.Windows.Forms
    $tb = New-Object System.Windows.Forms.TextBox
    $tb.Multiline = $true
    $tb.Paste()
    $tb.Text
}


function Set-ClipBoard() {
    Param(
      [Parameter(ValueFromPipeline=$true)]
      [string] $text
    )
    Add-Type -AssemblyName System.Windows.Forms
    $tb = New-Object System.Windows.Forms.TextBox
    $tb.Multiline = $true
    $tb.Text = $text
    $tb.SelectAll()
    $tb.Copy()
}
15
ответ дан 3 December 2019 в 03:04
поделиться

В PowerShell 5 мы теперь имеем Get-Clipboard и Set-Clipboard.

На Windows Server 2012 R2, где у нас только есть PowerShell 4, я смог использовать.NET для управления буфером обмена.

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$copied = [System.Windows.Forms.Clipboard]::GetText()

$to_paste = 'Hello World'
[System.Windows.Forms.Clipboard]::SetText($to_paste)
0
ответ дан 3 December 2019 в 03:04
поделиться

Я только что написал в блоге, как это сделать:

http://www.nivot.org/2009/10/14/PowerShell20GettingAndSettingTextToAndFromTheClipboard.aspx

-Oisin

4
ответ дан 3 December 2019 в 03:04
поделиться

Вы должны сначала проверить свой хост. ISE уже запускает STA, поэтому нет необходимости запускать другой поток или оболочку (это оптимизация, которая находится в моем списке задач для PSCX). Для приглашения консоли, которым является MTA, я бы использовал двоичный код, как показывает Oisin, или использовал бы простое небольшое приложение C #, например:

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
class OutClipboard {
  [STAThread]
  static void Main() {
    Clipboard.SetText(Console.In.ReadToEnd());
  }
}

А для получения содержимого буфера обмена Vista и более поздние версии имеют clip.exe.

Я не думаю, что даже расширенные функции 2.0 готовы позволить людям веселиться со своими собственными потоками .NET в сценарии.

1
ответ дан 3 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: