Come copiare il testo da PowerShell


56

A volte voglio copiare un comando da Powershell per incollarlo in un documento o voglio copiare l'output? Come posso selezionare e copiare il testo in Powershell?

Almeno so come incollare un testo (o un comando) in Powershell: basta fare clic con il tasto destro su Powershell.


2
È possibile che si desideri spostare le risposte non correlate a SharePoint nel sito Stack Overflow più generico. Apprezzo che probabilmente stai usando PowerShell in combinazione con SharePoint, ma questa domanda non appartiene a questo.
Jeroen Ritmeijer,

Sono d'accordo. Non è una pura domanda di Sharepoint.

Risposte:


49

Basta selezionare il testo nella finestra della console e premere Invio o il tasto destro del mouse. Quel testo selezionato finisce negli appunti.

Nota che funzionerà solo se la modalità QuickEdit è abilitata per la finestra della console. In caso contrario, abilitarlo nelle proprietà della finestra della console (menu Sistema → Proprietà → Opzioni) o accedere alla modalità Contrassegna dal menu Sistema → Modifica → Contrassegna (Alt + Spazio, E, K su una finestra inglese).


L'uso del tasto Maiusc per evidenziare il testo (il testo diventa bianco) non ha funzionato per me. Ho dovuto usare il mouse per evidenziare il testo (il testo diventa arancione)
reggaeguitar

25

Oppure invia l'output del tuo comando direttamente negli Appunti utilizzando clip.exe Ad esempio,

Get-ChildItem C:\Test -recurse | Clip

una pipa con clip è anche una buona alternativa! Grazie!

7
Tuttavia, questo non funzionerà con Unicode. In tal caso è possibile utilizzare Set-Clipboardda PSCX.
Joey,

7
Esiste un modo per clip.exegestire correttamente Unicode: impostare prima la $OutputEncodingvariabile PS su UTF-16 senza BOM, come segue:$OutputEncoding = New-Object System.Text.UnicodeEncoding($false, $false)
mklement0

Quest'ultimo trucco è quello che ho cercato di venire qui! Grazie
:)


2

Vai alla barra dei menu, in alto a sinistra, Modifica , Seleziona tutto , Copia , incolla nel blocco note


1

Per questo ho creato la mia funzionalità esterna.

Function Out-Clipboard{
    param($Value,[switch]$PassThru) 
    begin {
            [void][reflection.assembly]::LoadWithPartialName("Windows.Forms")
        $tb = New-Object System.Windows.Forms.TextBox
        $tb.Multiline = $true
        $pipeObjects = @()
    }
    process {
      $pipeObjects+=$_
    }
    end {
        if([string]::IsNullOrEmpty($Value)){
            $text=$null
            $pipeObjects | out-string -stream | %{$text = $text + $(if($text -ne $null){"`r`n"}) + $_}
            $tb.text = $text
        } 
        else {
            $tb.text = $value
        }
        $tb.SelectAll()
        $tb.Copy()
        if($PassThru){
            $pipeObjects
        }
        $tb.Dispose()
    }
}

Riga di comando di esempio:

Get-Process | Out-Clipboard

Spero sia quello che stai cercando.


Il tuo codice non funziona sulla mia scatola: New-Object: Impossibile trovare il tipo [System.Windows.Forms.TextBox]: assicurati che l'assembly contenente questo tipo sia caricato. Alla riga: 5 caratteri: 25 + $ tb = New-Object <<<< System.Windows.Forms.TextBox + CategoryInfo: InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId: TypeNotFound, Microsoft.PowerShell.Commands .NewObjectCommand

1
Se dai un'occhiata a pscx.codeplex.com , una delle funzioni fornite dalle estensioni della community è fuori dagli appunti

1
È davvero impressionante, @CosmosKey! Grazie per aver menzionato pscx.codeplex.com, @Winfred!
Anatoly Mironov,

1

Set-Clipboardè un cmdlet standard a partire da Powershell v5.0. In alcuni casi è necessario convertire gli oggetti in testo con Out-Stringprima del risultato del piping negli Appunti:

Get-ChildItem C:\Windows -recurse -depth 1 | Out-String -stream | Set-Clipboard

0

Se vuoi copiare l'ultimo comando che hai digitato negli Appunti, il seguente comando è utile (specialmente per i comandi che si estendono su più righe):

(Get-History -Count 1).CommandLine | Set-Clipboard

Se si desidera ripetere l'ultimo comando e copiarne l'output negli Appunti, utilizzare:

Invoke-History | Set-Clipboard

Avvertenza: dovresti farlo solo per comandi economici e idempotenti senza effetti collaterali.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.