Como Executar um Script PowerShell Sem Mostrar uma Janela

  1. Use o parâmetro -WindowStyle Hidden do PowerShell para executar um script do PowerShell sem exibir uma janela
  2. Use o Agendador de Tarefas para executar um script do PowerShell sem exibir uma janela
  3. Use Ferramentas de Terceiros para Executar um Script do PowerShell Sem Exibir uma Janela
  4. Conclusão
Como Executar um Script PowerShell Sem Mostrar uma Janela

O PowerShell da Microsoft é uma ferramenta que vem padrão com os sistemas operacionais Windows, permitindo que os usuários do Windows utilizem funções de automação baseadas em interfaces de linha de comando e comandos.

O PowerShell é uma ferramenta de script e uma ferramenta de automação; portanto, às vezes requer que a aplicação seja executada em segundo plano silenciosamente. Através deste artigo, veremos como executar a aplicação PowerShell silenciosamente em segundo plano, executando comandos em segundo plano.

Existem ferramentas de terceiros que você pode incorporar às ferramentas do PowerShell para alcançar a funcionalidade oculta do PowerShell. Contudo, existem maneiras fáceis de fazer isso apenas com o PowerShell.

Use o parâmetro -WindowStyle Hidden do PowerShell para executar um script do PowerShell sem exibir uma janela

Uma maneira simples de ocultar a janela do script seria usando o tipo hidden como estilo de janela. Uma janela do PowerShell aparecerá brevemente no início e depois será oculta durante a execução do script.

O parâmetro -WindowStyle no PowerShell permite que você controle a aparência da janela do PowerShell. O parâmetro -WindowStyle Hidden, quando aplicado, garante que a janela do PowerShell não seja exibida durante a execução do script.

Isso é especialmente útil para tarefas que requerem automação sem interação do usuário ou quando você não quer interromper o fluxo de trabalho do usuário.

Executar um script do PowerShell com o parâmetro -WindowStyle Hidden é simples. Abra uma janela do PowerShell e use o seguinte comando:

PowerShell.exe -WindowStyle Hidden { Script you want to execute.. }

Aqui está o que cada parte do comando faz:

  • PowerShell.exe: Inicia um novo processo do PowerShell.
  • -WindowStyle Hidden: Define o estilo da janela como oculto, impedindo que a janela do PowerShell seja exibida.
  • O script que você deseja executar está encerrado entre chaves {}.

A execução do PowerShell do comando acima é mostrada na imagem abaixo.

Execução do PowerShell

Uma vez inserido, a janela desaparece, mas a aplicação continuará a ser executada em segundo plano. Como mostrado na imagem abaixo dos processos em segundo plano, o PowerShell é executado como um processo em segundo plano.

Processo em segundo plano

Neste método, o usuário veria inicialmente o PowerShell. Portanto, não está verdadeiramente oculto para os usuários finais. Mesmo que a tarefa seja agendada previamente, a janela apareceria e seria rapidamente oculta.

Use um arquivo Batch

Se você está lidando com um script mais complexo ou planeja executá-lo várias vezes, este método (arquivo batch com comando PowerShell) pode ser mais organizado e eficiente.

Crie um arquivo batch (por exemplo, run_script.bat) com o seguinte conteúdo:

@echo off
powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
  • @echo off: Este comando impede que o arquivo batch exiba seus comandos na janela do console.
  • powershell -WindowStyle Hidden -File "C:\caminho\para\script.ps1": Esta linha chama o PowerShell com os parâmetros necessários e o caminho para o script.

Ambos os códigos acima alcançam o mesmo objetivo de executar um script do PowerShell sem exibir uma janela, mas usam abordagens ligeiramente diferentes. Contudo, existem outros métodos simples para alcançar a verdadeira funcionalidade oculta do PowerShell.

Use o Agendador de Tarefas para executar um script do PowerShell sem exibir uma janela

O Agendador de Tarefas é uma ferramenta do Windows que permite automatizar tarefas em horários ou eventos específicos. Ele oferece uma ampla gama de opções de personalização, tornando-o uma ferramenta versátil para gerenciar várias tarefas em seu computador.

Criando uma Nova Tarefa

  1. Abra o Agendador de Tarefas: Você pode fazer isso pesquisando por "Agendador de Tarefas" no menu Iniciar do Windows.
  2. Navegue até "Ações": Clique em "Criar Tarefa" no painel à direita.

Configurando a Tarefa

  1. Nomeie a Tarefa: Forneça um nome e descrição para sua tarefa. Isso deve ser algo descritivo que reflita o que a tarefa faz.
  2. Escolha o Gatilho da Tarefa: Selecione como você deseja disparar a tarefa. As opções incluem diariamente, semanalmente, mensalmente, ao fazer logon, etc. Escolha o gatilho que melhor se adapta às suas necessidades.

Configurando Gatilhos

  1. Selecione os detalhes do Gatilho: Dependendo do gatilho escolhido, você precisará fornecer detalhes adicionais. Por exemplo, se escolher "Diário", você especificará a hora e a frequência.
  2. Configurações Avançadas: Você pode definir opções mais avançadas clicando em "Configurações Avançadas". Isso permite que você personalize ainda mais quando e com que frequência a tarefa é executada.

Especificando Ações

  1. Selecione Ação: Na etapa "Ações", escolha "Novo" > "Iniciar um programa" já que estaremos executando um script do PowerShell.
  2. Programa/script: Navegue e selecione powershell.exe em seu sistema.
  3. Adicionar argumentos (opcional): Digite o seguinte:
-WindowStyle Hidden -File "C:\path\to\script.ps1"

Substitua "C:\caminho\para\seu\script.ps1" pelo caminho real para seu script do PowerShell.

Iniciar um programa

Habilitando Opções de Segurança

Marque a caixa que diz "Executar com os maiores privilégios". Isso garante que o script será executado com privilégios de administrador se necessário.

Você também pode clicar em Executar se o usuário estiver logado ou não, e isso nunca mostrará a janela do PowerShell quando a tarefa for executada.

Agendador de Tarefas

Concluindo e Testando a Tarefa

Revise o resumo da tarefa e clique em "OK" para criá-la.

Você pode testar a tarefa clicando com o botão direito sobre ela no Agendador de Tarefas e selecionando "Executar". Isso executará a tarefa imediatamente de acordo com os gatilhos que você definiu.

O Agendador de Tarefas permite automatizar tarefas em intervalos ou eventos especificados. Ao usá-lo para disparar o PowerShell com os argumentos apropriados, você pode executar scripts silenciosamente.

No entanto, este método pode afetar a funcionalidade de alguns scripts que você tenta usar. Portanto, você também pode usar ferramentas de terceiros ou extensões da comunidade para o PowerShell.

Use Ferramentas de Terceiros para Executar um Script do PowerShell Sem Exibir uma Janela

Ferramentas de terceiros estendem as capacidades do PowerShell ao fornecer funcionalidades e recursos adicionais. Quando se trata de executar scripts do PowerShell sem exibir uma janela, essas ferramentas desempenham um papel crucial na automação de tarefas de forma fluida.

Use o PSExec

PSExec é uma ferramenta versátil do Sysinternals (agora parte da Microsoft) que permite executar processos remotamente. Pode ser usado para executar scripts do PowerShell silenciosamente.

psexec -d -s powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
  • psexec: Inicia o PSExec.
  • -d: Instruções para o PSExec não esperar o comando ser concluído.
  • -s: Executa o comando com permissões de sistema.
  • powershell -WindowStyle Hidden -File "C:\caminho\para\script.ps1": Executa o script do PowerShell silenciosamente.

Use o NSSM (Non-Sucking Service Manager)

NSSM é um gerenciador de serviços para Windows que permite executar qualquer aplicação como um serviço. Isso pode ser particularmente útil para executar scripts silenciosamente em segundo plano.

  1. Baixe e instale o NSSM do site oficial.
  2. Abra um prompt de comando com privilégios administrativos.
  3. Execute o seguinte comando para criar um novo serviço:
nssm install <ServiceName> "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1"
  • nssm install <NomeDoServico>: Instala um novo serviço com o nome especificado.
  • "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe": Especifica o caminho para o executável do PowerShell.
  • "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\caminho\para\script.ps1": Passa parâmetros para o PowerShell, instruindo-o a executar o script silenciosamente.

Conclusão

O PowerShell é uma ferramenta poderosa de automação para usuários do Windows, oferecendo extensas capacidades de linha de comando. Em cenários onde a execução silenciosa em segundo plano é necessária, vários métodos estão disponíveis.

  • Usando o parâmetro -WindowStyle Hidden: Isso permite uma breve visibilidade da janela do PowerShell antes de ocultá-la durante a execução do script. É adequado para tarefas que requerem automação sem interação do usuário.
  • Arquivos Batch: Organizados para executar scripts complexos ou repetidos. Arquivos batch chamam o PowerShell com os parâmetros necessários.
  • Agendador de Tarefas: Oferece automação em horários ou eventos específicos. Ao configurá-lo para executar o PowerShell com os parâmetros corretos, os scripts podem ser executados silenciosamente.
  • Ferramentas de Terceiros (por exemplo, PSExec, NSSM): Estendem as capacidades do PowerShell, permitindo a execução de scripts sem janelas.

Escolha o método que melhor se adapta às suas necessidades e fluxo de trabalho específicos.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.