Comment copier du texte depuis PowerShell

56

Parfois, je veux copier une commande de Powershell pour coller dans un document ou je veux copier le résultat? Comment sélectionner et copier du texte dans Powershell?

Au moins, je sais comment coller un texte (ou une commande) dans Powershell: il suffit de cliquer avec le bouton droit de la souris sur Powershell.

Anatoly Mironov
la source
2
Vous souhaiterez peut-être déplacer des réponses non liées à SharePoint vers le site plus générique de débordement de pile. J'apprécie que vous utilisiez probablement PowerShell en combinaison avec SharePoint, mais ces questions n'appartiennent pas à la présente.
Jeroen Ritmeijer le
Je suis d'accord. Ce n'est pas une pure question Sharepoint.

Réponses:

49

Sélectionnez simplement le texte dans la fenêtre de la console et appuyez sur Entrée ou sur le bouton droit de la souris. Ce texte sélectionné se retrouve dans votre presse-papiers.

Notez que cela ne fonctionnera que si le mode QuickEdit est activé pour la fenêtre de la console. Si ce n'est pas le cas, activez-la dans les propriétés de la fenêtre de la console (menu Système → Propriétés → Options) ou passez en mode Marque via le menu Système → Édition → Marquer (Alt + Espace, E, K sous Windows anglais).

Wictor Wilen MCA MCM MVP
la source
Utiliser la touche Maj pour surligner le texte (le texte devient blanc) ne m'a pas fonctionné. Je devais utiliser la souris pour surligner le texte (le texte devient orange)
reggaeguitar
25

Ou envoyez le résultat de votre commande directement dans le presse-papiers à l'aide de clip.exe. Par exemple,

Get-ChildItem C:\Test -recurse | Clip
ravikanthe
la source
un tuyau avec clip est une bonne alternative, aussi! Je vous remercie!
7
Cela ne fonctionnera pas avec Unicode, cependant. Dans ce cas, vous pouvez utiliser Set-ClipboardPSCX.
Joey
7
Il existe un moyen de clip.exegérer correctement Unicode: définissez d'abord la $OutputEncodingvariable PS sur BOM-less UTF-16, comme suit:$OutputEncoding = New-Object System.Text.UnicodeEncoding($false, $false)
mklement0
Ce dernier tour est ce que je cherchais ici! Merci
:)
2

Allez dans la barre de menu, en haut à gauche, Édition , Tout sélectionner , Copier , coller dans le bloc-notes

Zoom
la source
1

J'ai construit mon propre funciton hors-presse-papiers pour cela.

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()
    }
}

Exemple de ligne de commande:

Get-Process | Out-Clipboard

J'espère que c'est ce que vous cherchez.


la source
Votre code ne fonctionne pas dans ma boîte: New-Object: impossible de trouver le type [System.Windows.Forms.TextBox]: assurez-vous que l'assembly contenant ce type est chargé. A la ligne: 5 char: 25 + $ tb = New-Object <<<< System.Windows.Forms.TextBox + CategoryInfo: InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId: TypeNotFound, Microsoft.PowerShell.Commands .NewObjectCommand
1
Si vous consultez pscx.codeplex.com , l’une des fonctions fournies par les extensions de la communauté est out-clipboard
1
C'est très impressionnant, @CosmosKey! Merci d'avoir mentionné pscx.codeplex.com, @Winfred!
Anatoly Mironov
1

Set-Clipboardest une cmdlet standard à partir de Powershell v5.0. Dans certains cas, vous devez convertir les objets en texte avec le Out-Stringrésultat avant la tuyauterie dans le presse-papiers:

Get-ChildItem C:\Windows -recurse -depth 1 | Out-String -stream | Set-Clipboard
maoïsme
la source
0

Si vous souhaitez copier la dernière commande que vous avez saisie dans le Presse-papiers, la commande suivante est utile (en particulier pour les commandes couvrant plusieurs lignes):

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

Si vous voulez répéter la dernière commande et copier sa sortie dans le presse-papier, utilisez:

Invoke-History | Set-Clipboard

Mise en garde: vous ne devriez le faire que pour des commandes peu coûteuses et idempotentes, sans aucun effet secondaire.

Wensveen
la source