In Powershell, wie wollen Sie Rohr die Ausgabe eines Befehls in die Zwischenablage aberRohr Ausgabe in die Zwischenablage mit Powershell
- Noch in der Lage sein, die Daten zu Rohr zu mehreren Prozessen
- keine Abhängigkeiten von externen Anwendungen wie
clip.exe
- für sie als Filter zu arbeiten, so dass wir sehen, Ausgabe auf der Kommandozeile sofort
?
EDIT: 14. Mai 2015
Nach 3 Jahren, dachte ich, ich würde meine teilen ClipboardModule
(ich hoffe, ich darf):
Add-Type -AssemblyName System.Windows.Forms
Function Get-Clipboard {
param([switch]$SplitLines)
$text = [Windows.Forms.Clipboard]::GetText();
if ($SplitLines) {
$xs = $text -split [Environment]::NewLine
if ($xs.Length -gt 1 -and -not($xs[-1])) {
$xs[0..($xs.Length - 2)]
} else {
$xs
}
} else {
$text
}
}
function Set-Clipboard {
$in = @($input)
$out =
if ($in.Length -eq 1 -and $in[0] -is [string]) { $in[0] }
else { $in | Out-String }
if ($out) {
[Windows.Forms.Clipboard]::SetText($out);
} else {
# input is nothing, therefore clear the clipboard
[Windows.Forms.Clipboard]::Clear();
}
}
function GetSet-Clipboard {
param([switch]$SplitLines, [Parameter(ValueFromPipeLine=$true)]$ObjectSet)
if ($input) {
$ObjectSet = $input;
}
if ($ObjectSet) {
$ObjectSet | Set-Clipboard
} else {
Get-Clipboard -SplitLines:$SplitLines
}
}
Set-Alias cb GetSet-Clipboard
Export-ModuleMember -Function *-* -Alias *
ich in der Regel verwenden Sie die cb
alias (für GetSet-Clipboard
), weil es zwei Wege, dh ist die Zwischenablage und festlegen:
cb # gets the contents of the clipboard
"john" | cb # sets the clipboard to "john"
cb -s # gets the clipboard and splits it into lines
Warum wollen Sie nicht 'clip' benutzen? –
Caleb - So kann ich die Ausgabe in der Befehlszeile auch sehen. –
Tahir, was ist los mit 'Get-Foo | Tee-v Ausgang; $ Ausgabe | Clip' dann? – Joey