Como automatizar o Windows com o PowerShell

Como automatizar o Windows com o PowerShell


Conhecer o PowerShell

Explorando as ferramentas mais avançadas do Windows é uma ótima maneira de começar a tomar o controle de seu PC. Saiba mais sobre o Gerenciador de tarefas, por exemplo, e em breve você vai ser capaz de detectar, e mais importante, encerrar processos na sua falta pode estar a abrandar o seu computador.

Contando com os applets padrão apresenta todos os tipos de problemas , apesar de tudo. Você tem que iniciá-los manualmente cada vez que você quiser fazer alguma coisa. Em seguida, você é forçado a trabalhar o seu caminho através da interface, talvez escolhendo as mesmas configurações e opções, uma e outra vez. E mesmo depois de tudo isso, o applet não pode fazer exatamente o que você precisa.

Felizmente, não há outra maneira. PowerShell é uma linguagem de script poderosa que lhe permite assumir o controle total de todos os aspectos do seu PC. Se você precisa para assistir a processos em execução, monitorar o sistema de arquivo, ajustar o registro, baixar arquivos, analisar páginas web, criar relatórios ou fazer qualquer outra coisa em seu PC local ou qualquer outro sistema em rede, PowerShell pode ajudá-lo a começar o trabalho feito , tão precisamente quanto você precisa, e tão rapidamente quanto possível.

Como automatizar o Windows com o PowerShell

O que é mais, enquanto que às vezes pode ser complicado, você não tem que ser um programador para começar a aprender a alguns princípios básicos de script. Na verdade, se você trabalha na linha de comando do Windows, mesmo ocasionalmente, você poderia ser a realização de tarefas úteis no PowerShell com estudo apenas a poucos minutos.

Prompt de comando

Para iniciar o PowerShell, tipo ‘PowerShell “na caixa de busca, em seguida, clique com o botão direito do mouse na entrada do Windows PowerShell e escolha” Executar como administrador “.

como você verá, a interface do PowerShell parece e se sente quase idêntico ao comando padrão linha. E, em muitos aspectos, isso é uma coisa boa, porque significa que você pode usar todos os comandos que você já conhece.

Digite DIR para listar os arquivos em uma pasta, por exemplo, cls para limpar a tela, ou IPCONFIG para listar seus adaptadores de rede; tudo funciona como seria de esperar.

O que você começa, no entanto, é muitas novos comandos – ou cmdlets (pronuncia-se “command-lets”) em PowerShell-falar – e, felizmente, há um cmdlet para enumerá-los todos. Digite get-comando e pressione [Enter] para dar uma olhada.

Por enquanto, ignore as funções e olhar apenas para os cmdlets. Como você verá, cmdlets ter uma estrutura clara verbo-substantivo de nomenclatura: Start-Process, Clear-EventLog, Get- ComputerRestorePoint, Restart- computador, e assim por diante. Isso os torna muito fácil de entender, mas, é claro, muitas vezes você vai precisar de mais detalhes.

Digite Update-Help para baixar e instalar a documentação, então use o Get-Help cmdlet, assim, para descobrir um pouco mais sobre PowerShell:

Get-Help Start-Processo

serviço Get-Help

Get-help relógio

A primeira linha exibe ajuda específica sobre Start-de Processos; a segunda lista cmdlets com ‘serviço’ no nome; eo terceiro apenas procura o sistema de ajuda para todos os itens que contêm a palavra ‘relógio’ -. ótimo quando você sabe o que você quer fazer, mas simplesmente não tem certeza que cmdlet usar

consultas rápidas

Chega de teoria; é hora de fazer algum trabalho real. Vamos começar usando PowerShell para coletar alguns dados sobre nosso sistema, como este:. Get-Process

Como você provavelmente vai adivinhar a partir do nome do cmdlet, este recebe uma lista de processos em execução no seu sistema ( da mesma forma como você veria no Gerenciador de tarefas), e exibe seu uso de CPU e RAM, juntamente com algumas outras estatísticas.

Isso é já útil, e não algo que você pode fazer facilmente no Windows sozinho, mas estamos apenas começando. Em seguida, digite o seguinte:

Get-Process | CPU Where-Object -gt 5

Como antes, PowerShell é primeiro verificar seus processos em execução. O personagem gasoduto diz PowerShell para passar essa lista para o cmdlet Where. E isso faz a varredura através da lista de processos, procurando qualquer coisa que corresponda a condição de que nós definimos – que deveria ter usado mais de cinco segundos de tempo de CPU (-gt é maior do que; -ge é maior ou igual a; -É é inferior; -le é inferior ou igual a)

Temos filtrada agora a nossa lista original um pouco, então, mas ainda há mais a fazer.. O próximo passo é inserir o seguinte:

Get-Process | Where-Object CPU -gt 5 | Sort-Object lida com -descending

Ainda estamos buscando seus processos em execução e escolhendo os porcos CPU, mas agora PowerShell também está classificando os processos restantes pelo seu número de identificadores (uma medida de quantos arquivos, blocos de memória e outros objetos um processo tem aberto).

Mais uma vez, este é apenas um exemplo, então ajustá-lo; ordenar por CPU, digamos, ou ProcessName (os cabeçalhos das colunas no topo da lista de Get-Process lhe dará uma idéia dos nomes que você pode usar).

Como automatizar o Windows com o PowerShell

Relatórios poderosos

Como você pode ver, existem muitas maneiras de personalizar e filtro qualquer que seja PowerShell retorna, mas há um problema: nós estamos ainda só a obtenção de resultados de texto simples. Então tente o seguinte:

Get-Process | Where-Object CPU -gt 5 | Sort-Object lida com -descending | Out-GridView

Agora PowerShell não só filtrar e classificar a lista; ele também exibe os resultados em uma grade interativa. Você pode esconder, reordenar ou classificar colunas e filtrar os dados de várias maneiras. E uma vez que você está feliz, quaisquer linhas selecionadas podem ser copiados para o clipboard, pronto para usar em qualquer outro lugar.

Isso não é ruim para uma única linha de código e, é claro, você pode ter como muitas linhas que você precisa, mas há mais. Porque cmdlets PowerShell trabalhar de uma forma tão consistente, você pode tomar este exemplo e reutilizá-lo quase imediatamente. Dê uma olhada nestes exemplos:

Get-WinEvent Sistema | Where-Object LevelDisplayName -eq “Critical” | Out-GridView

Get-Service | Where-Object estatuto -eq “correr” | displayname Sort-Object | Out-GridView

A primeira obtém o conteúdo do log de sistema do Windows, procura por erros críticos e os exibe em uma tabela. O segundo vai buscar nossos serviços em execução, mais uma vez classificando-os para atender às nossas necessidades. E ambos os exemplos pode ser ainda mais refinado e personalizado em muitas maneiras diferentes.

tomar o controle com o PowerShell

PowerShell fornece uma abundância de triagem e opções de filtragem e, em seguida, mas não é apenas um relato passiva ferramenta. Dê uma olhada nisso:

Get-Service | Out-GridView -Title ‘Select serviço para reiniciar!’ -OutputMode Individual | Reinicie-Service -WhatIf

Estamos recebendo uma lista de serviços instalados, e exibindo-os com um título de janela personalizado como um prompt de usuário. O interruptor Individual -OutputMode diz PowerShell que estamos autorizados a selecionar um item na lista. Se fizermos isso e clique em ‘OK’, o nosso serviço escolhido é passado ao longo do gasoduto para o próximo cmdlet, Start-Service, que pára e começa por nós, o que é muito útil como uma forma de tentar reviver todos os serviços que estão se comportando mal.

Ou, pelo menos, seria reiniciar o serviço se não tivéssemos incluído o interruptor -WhatIf, que conta PowerShell para exibir simplesmente a sua acção em vez disso. Esta é uma opção de segurança acessível, o que significa que você pode ver como um cmdlet pode funcionar sem o risco de, neste caso, parar acidentalmente um serviço que realmente deve ser deixado sozinho. Mas se você quiser experimentá-lo de verdade, digite o mesmo cmdlet sem o -WhatIf, e você terá criado seu próprio ferramenta de reinício de serviço personalizado.

você pode, naturalmente, fazer algo semelhante com processos, serviços e quaisquer outros objetos PowerShell pode manipular. Mas mesmo isso não é o fim da história:

Get-Service -ComputerName MyPC | Out-GridView -OutputMode Individual | Reinicie-Service -WhatIf

Cmdlets como Get-Service e Get-Process não estão restritos a seu sistema local. Utilize o interruptor -ComputerName com o nome de um computador de rede e você é capaz de ver o que ele está correndo, também (assumindo que a sua conta de usuário do Windows tem os privilégios para acessá-los). PowerShell pode, então, gerenciar sistemas remotos no exatamente da mesma maneira como o seu próprio PC.

PowerShell ISE

Até agora temos vindo a trabalhar apenas no console do PowerShell, a introdução de comandos, um por um e ver os resultados imediatamente. Não há outra maneira de executar código, embora – no Ambiente de Script Integrado PowerShell (ISE). É um pouco mais complexo, mas muito melhor quando você gostaria de cadeia vários cmdlets juntos, ou criar algum código para reutilização posterior. Lançá-lo através da procura de PowerShell e clicando em ‘Windows PowerShell ISE “, entrando Powershell-ISE.exe na caixa Executar, ou inserindo ISE no console do PowerShell.

O ISE abre com uma interface de dois painéis . À esquerda está o console, onde você pode digitar comandos PowerShell. À direita está a comandos Add-On, uma ferramenta útil que pode ajudar a construir comandos com o mouse

processo de Tipo na caixa de Comandos ‘Nome’.; você verá vários cmdlets correspondentes. Selecione “Get-Process” para ver seus parâmetros, ajudando você a entender o que o cmdlet pode fazer. Clique na guia ‘Nome’, por exemplo, e você encontrará uma caixa Module. O que isso faz? Verifique-o e clique em “Executar”. Os comandos Add-On constrói o -module cmdlet Get-Process, executa-lo no console, e exibe os resultados. – Uma lista de todos os seus processos, onde cada um inclui seus módulos carregados (DLLs e outros arquivos de suporte)

Embora isso possa ser útil, o console ISE também tem alguns truques extras para acelerar sua codificação PowerShell. Comece a digitar um cmdlet (tente Get-Process novamente) e ISE exibe possíveis correspondências. No momento em que você alcançou Get-Pro, o cmdlet correta deve ser destacado, e você pode pressionar [Tab] para entrar automaticamente os caracteres restantes.

É uma história semelhante quando se trata de entrar parâmetros. Toque na barra de espaço, então um hífen e ISE lista as várias opções Get-Process. Use as teclas do cursor para se deslocar para baixo, em seguida, selecione ‘-module’, pressione [Enter] e, novamente, ele é automaticamente adicionado ao seu comando, nenhum datilografar necessários.

Como você pode ver, não há mais a aprender o ISE, mas também faz com que seja mais fácil para explorar o que PowerShell tem para oferecer. Agora só temos de usá-lo para construir um script.

Scripts

Clique em “Visualizar> Mostrar Painel de Script” para revelar o painel de script. Esta é uma área separada onde você pode digitar uma série de comandos, através de quantas linhas necessárias, sem tê-los executado imediatamente. Em vez disso, você pode executar todos os comandos no painel Script, a qualquer momento, pressionando [F5] ou clicando “Debug> Run ‘.

Para tentar dar um presente, digite os quatro seguintes comandos no painel Script .

$ computername = read-host “Qual o nome do computador que você gostaria de verificar?”

$ SO = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $ computername

$ LastBootUpTime = $ os.ConvertToDateTime

($ os.LastBootUpTime)

Escrever-output “time $ computername última inicialização foi de US $ LastBootUpTime”

Este é um script simples, que tenta descobrir a hora do último arranque para seja qual for computador de rede que você especificar. Embora muito curto, é muito mais avançado do que o nosso código anterior, e apresenta vários novos conceitos.

A primeira linha, por exemplo, usa o cmdlet read-host para exibir um prompt, pedindo que o usuário insira um nome do computador. Este é então armazenado em uma variável chamada $ computername.

A segunda linha usa o WMI para recuperar o sistema operacional para o computador especificado, enquanto o terceiro, em seguida, obtém o seu tempo de inicialização e converte-lo em um formato legível. (Não se preocupe com os detalhes técnicos aqui, tudo que você realmente precisa para se lembrar é que Get-WmiObject pode retornar informações úteis sobre a configuração do sistema.)

Finalmente, o último cmdlet Write-saída envia uma mensagem para o console. As variáveis ​​serão substituídos por seus valores reais assim, por exemplo, que você pode ver “o tempo MyServer última inicialização foi 2014/06/10 08:30”.

Pressione [F5] para iniciar o script. Se você pode acessar um PC em rede, insira seu nome, caso contrário, digite localhost ou apenas um período para verificar o sistema local. E é isso – o seu primeiro script multi-line. Clique em “Arquivo> Salvar como” e salve-o como C:. Scripts LastBootTime.ps1 (de criar a pasta, se necessário), pronto para ser lembrado sempre que quiser

Nosso script ISE amostra era muito pequeno , mas os princípios podem ser usados ​​para executar o que quiser. Visite a Microsoft Scripting Center – ou procurar scripts do PowerShell – para localizar mais exemplos, copiar e colá-los no painel de scripts e pressione [F5]

Há ainda é uma questão em aberto, no entanto:.? como você pode executar o script fora do PowerShell clicando duas vezes parece uma solução óbvia, mas tentar isso e o arquivo é aberto no bloco de notas; . a menos de útil

Você poderia relançar PowerShell e digite C:. Scripts LastBootTime.ps1 na linha de comando, mas isso não vai funcionar, ou você só vai ver uma mensagem reclamando que “running scripts está desabilitada este sistema “isso é normal;.. as predefinições de segurança colocar limites estritos sobre scripts para evitar seu abuso por malware

para contornar esse problema, você precisa descobrir mais sobre a execução de PowerShell . políticas Os seguintes cmdlets vai ajudar:

Get-ExecutionPolicy

Set-ExecutionPolicy RemoteSigned

a primeira linha deve dizer-lhe que a sua política é definida como “restrito”, bloqueando scripts. Se assim for, entrando na segunda linha define a política de execução de “RemoteSigned”, em vez. Isso significa que seus próprios scripts será executado imediatamente, mas os scripts que você baixar terá de ser assinado digitalmente por um fornecedor confiável

Teste a nova política, digitando C:. Scripts LastBootTime.ps1 novamente, e desta vez que seu script deve ser executado. Se é demasiado incómodo para entrar no caminho completo de cada vez, basta adicionar C: Scripts (ou qualquer pasta que você escolher para seus scripts) para a variável de ambiente PATH (pressione [Win] + [X], clique em “Sistema> System Advanced Configurações> Variáveis ​​de Ambiente “, clique duas vezes em ‘caminho’ em ‘Variáveis ​​de sistema’, em seguida, adicione um ponto e vírgula ea pasta -;. C Scripts – até o final de seu trajeto)

Este isn ‘t bastante o fim da história. A PowerShell biblioteca tem alguns detalhes úteis sobre a execução de scripts, e não há a puro truque que você pode usar para iniciar scripts a partir de um atalho mas caso contrário, você já sabe como fazer o teste, escrever e executar código PowerShell. Agora é hora de começar alguns scripts sério.

dicas PowerShell e truques

mais rápido edição

Se você precisar reutilizar um comando PowerShell, não perca tempo redigitação-lo. Pressione [F7] para ver o seu histórico recente, selecione um comando, pressione [Enter] para executá-lo, ou a seta para a direita para colocá-lo na linha de comando. Veja https://tinyurl.com/qyovam2 para mais atalhos de edição.

Use comentários

Como adicionar comentários aos seus scripts do PowerShell vai ajudar os outros a entender o que eles fazem (ou agir como um lembrete para voce). Digite um caractere # e tudo o que você entra para o resto dessa linha será tratada como um comentário de texto simples e não processados ​​como código.

Painel de Controle de Acesso

PowerShell pode acessar os componentes do Windows , assim como os ficheiros. Use Get-ControlPanelItem para obter uma lista de applets do Painel de controle, e algo como Show-ControlPanelItem * O visor * para lançar um.

Gravar uma sessão do PowerShell

Revendo o que aconteceu em um PowerShell sessão pode ajudar o processo de aprendizagem. Digite o cmdlet todas as suas atividades de console (incluindo qualquer saída) Start-Transcript e são salvos em um arquivo de texto na pasta Documentos. Enter Stop-Transcript para parar a gravação.

Downloads com script

necessidade de baixar um arquivo de um script? Este é o caminho mais fácil (ver https://tinyurl.com/pdpvhdo para algo mais inteligente):

$ client = New-Object “System.Net.WebClient”

$ client .DownloadFile ( “https://domain.com/bigfile.zip”, “c: temp bigfile.zip”

Enviar e-mail

Você não tem tempo para monitorar tudo seus scripts estão fazendo? você pode configurá-los para enviar um e-mail, em vez disso. Verifique o cmdlet Send-MailMessage para um exemplo básico, ou Peter Morrisey de Blog para algo mais poderoso.

Get exemplos

Se você não tem certeza de como usar um cmdlet, use o Get-Help mudar -exemplos, como Get -help Invoke-WebRequest -exemplos, para saber mais.

leitor de RSS

o cmdlet Invoke-RestMethod pode acessar o feed RSS de qualquer fonte de web e manipulá-lo como quiser. Aqui está uma maneira rápida de ver o que está acontecendo no blogue PowerShell da Microsoft:

Chamar-RestMethod -URI | Select-Object Título, link | out-GridView

arquivos de processo

para processar arquivos de texto, use Get-Content para lê-los, manipular o conteúdo como você deseja e usar Set-Content para salvar as alterações. Os erros podem resultar em perda de dados, embora -. Trabalhar apenas com cópias de arquivos até que você esteja certo que você sabe o que está fazendo

Executar scripts automaticamente

Se você se tornar um PowerShell mestre, você pode até mesmo configurar o Agendador de tarefas para executar scripts automaticamente, sempre que quiser. Leia-se sobre o New-ScheduledTaskAction, Nova ScheduledTaskTrigger e registar-ScheduledTask cmdlets, e see este blog para um exemplo.

Enter PowerShell comandos mais rápido

Não perca tempo digitando comandos longos no console do PowerShell . Inserir apenas alguns caracteres (Get-Pr para Get-Process, por exemplo), manter guia pressionando e quaisquer partidas aparecer. Ou usar um alias, uma versão mais curta do mesmo texto; npssc funciona exatamente da mesma forma que Nova PSSessionConfigurationFile, por exemplo.

Digite Get-Alias ​​para ver os aliases que você pode usar agora, e Set-Alias ​​para criar o seu próprio.

Estender suas habilidades

Aponte seu browser para Scripting Center da Microsoft, e olhar para interessante scripts de exemplo. Copie e cole-as no ISE, pressione [F5] para testá-los, em seguida, ler o código e tentar descobrir como eles funcionam. – É uma ótima maneira de aprender o idioma


Como automatizar o Windows com o PowerShell Como automatizar o Windows com o PowerShell
Techradar – Todas as últimas notícias de tecnologia

Como automatizar o Windows com o PowerShell
alguns dias atrás nós dissemos-lhe aqui em Xataka lavar o rosto An...

Os boomboxes bazuca porte do passado não são mais, e não ter sido por...

Um dos seus criadores pensa assim, mas não dá mais detalhes Embora Plat...

Que dormir é um dos maiores prazeres da vida temos todos já muito claro....

Bibliography ►

phoneia.com (March 13, 2016). Como automatizar o Windows com o PowerShell. Bogotá: E-Cultura Group. Recovered from https://phoneia.com/pt/como-automatizar-o-windows-com-o-powershell/