Como copiar texto do PowerShell

51

Às vezes, quero copiar um comando do Powershell para colar em um documento ou quero copiar a saída? Como posso selecionar e copiar texto no Powershell?

Pelo menos eu sei como colar um texto (ou um comando) no Powershell: basta clicar com o botão direito do mouse no Powershell.

    
por Anatoly Mironov 22.06.2011 / 10:17

7 respostas

45

Basta selecionar o texto na janela do console e pressionar Enter ou o botão direito do mouse. Esse texto selecionado acaba na sua área de transferência.

Observe que isso só funcionará se o modo de edição rápida estiver ativado para a janela do console. Se não estiver, habilite-o nas propriedades da janela do console (menu Sistema → Propriedades → Opções) ou entre no modo de marcação através do menu Sistema → Editar → Marcar (Alt + Espaço, E, K no Windows em inglês).

    
por 22.06.2011 / 10:30
23

Ou envie a saída do seu comando diretamente para a área de transferência usando clip.exe Por exemplo,

Get-ChildItem C:\Test -recurse | Clip
    
por 22.06.2011 / 12:14
2

Dê uma olhada em Enviar texto em Área de transferência para aplicativos como o bloco de notas (C # ou Powershell) . Você encontrará mais algumas dicas. No entanto, a resposta do @Wictor é provavelmente a solução mais fácil.

    
por 22.06.2011 / 13:09
2

Vá até a barra de menus, no canto superior esquerdo, Editar , Selecionar tudo , Copiar , colar no bloco de notas     

por 13.08.2013 / 02:40
1

Eu criei minha própria função out-clipboard para isso.

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

Exemplo de linha de comando:

Get-Process | Out-Clipboard

Espero que seja o que você está procurando.

    
por 22.06.2011 / 16:11
1

Set-Clipboard é o cmdlet padrão do Powershell v5.0. Em alguns casos, você deve converter objetos em texto com Out-String antes de enviar o resultado para a área de transferência:

Get-ChildItem C:\Windows -recurse -depth 1 | Out-String -stream | Set-Clipboard
    
por 27.05.2018 / 14:16
0

Se você deseja copiar o último comando digitado para a área de transferência, o seguinte comando é útil (especialmente para comandos que abrangem várias linhas):

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

Se você quiser repetir o último comando e copiar sua saída para a área de transferência, use:

Invoke-History | Set-Clipboard

Advertência: você deve fazer isso apenas para comandos baratos e idempotentes, sem efeitos colaterais.

    
por 18.10.2018 / 13:45

Tags