Нет, селектор «предыдущего сиблинга» отсутствует.
В соответствующей заметке ~
используется для общего брака-последователя (это означает, что элемент появляется после этого, но не обязательно сразу после) и является селектором CSS3. +
для следующего родного брата и является CSS2.1.
См. Комбинированный смежный блок-класс из Селектора уровня 3 и 5.7 Смежные селекторные ролики из Каскадные таблицы стилей Уровень 2 Редакция 1 (CSS 2.1) Спецификация .
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()
}
В 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)
Я только что написал в блоге, как это сделать:
http://www.nivot.org/2009/10/14/PowerShell20GettingAndSettingTextToAndFromTheClipboard.aspx
-Oisin
Вы должны сначала проверить свой хост. 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 в сценарии.