Sou novo no PowerShell. Quero fazer algo assim ao desligar, antes de desligar o computador. Pretendo que o Windows MMC/Local Group Policy Editor faça isso com um script do PowerShell.
cmd as admin
echo "SOME COMMAND"
echo "exit"
Basicamente, após acionar o evento de desligamento ou reinicialização, ele deverá:
Abra o CMD como administrador (e selecione automaticamente Sim no UAC?).
Execute ALGUM COMANDO (haverá muitos).
Feche o CMD e permita que o Windows 10 desligue/reinicialize.
Agora, sei como fazer com que o MMC adicione um script do PowerShell para ser executado antes que o comando de desligamento seja concluído. Eu só preciso saber a sintaxe de como executar as três etapas acima.
Para ser claro:
Meu ponto principal é poder abrir o CMD como administrador, digitar um comando e sair do CMD. O PowerShell normalmente não executa alguns comandos específicos como administrador corretamente, mas o CMD o faz. Dessa forma, o próprio PowerShell não precisa de privilégios de administrador, apenas do CMD de execução temporária.
Não me importo de clicar em SIM em um UAC, quando necessário, porque acho que, se for o caso, provavelmente posso usar sendkeys {TAB}{TAB}{ENTER}
ou algo assim. O que não consigo encontrar nas interwebs é como iniciar um script do PowerShell para salvá-lo. Estou vendo muito sobre sendkeys na sintaxe. No bash no Linux, é simples: #!/bin/bash
e pronto insta-bash, mas o Windows parece ruim nesse aspecto.
Se houver uma maneira melhor de fazer isso do que CMD > Echo "stuff" > exit CMD, por favor me avise. Eu sei o que quero digitar em cada "coisa" do Echo (ou melhor, sendkeys, se eu acabar usando isso), só não sei como abrir o CMD como administrador.
Obrigado.
Responder1
Eu realmente não entendo o que você está procurando.
No entanto, o objetivo do PowerShell não é uma ferramenta automatizada de GUI. Você pode fazer isso usando SendKeys, assim como faria com VBScript.
No entanto, como você é novo, é vital que você se familiarize com o PowerShell para garantir que realmente o entende, bem como quando e por que usá-lo. Acesse o YouTube e pesquise 'Beginning PowerShell' e faça uma pesquisa na web por PowerShell usando SendKeys ---exemplo---
Quanto ao seu caso de uso:
Basicamente, após acionar o evento de desligamento ou reinicialização, ele deverá:
- Abra o CMD como administrador (e selecione automaticamente Sim no UAC?).
Iniciar o PowerShell é um prompt de comando do PowerShell. Não há necessidade de abrir cmd.exe para usá-lo. O PowerShell pode substituir tudo o que o cmd.exe faz. Aceitar o UAC só é possível se você estiver tentando executar um comando elevado. O PowerShell não ignorará o UAC porque você precisa fornecer credenciais de administrador. O Windows exige isso.
- Execute ALGUM COMANDO (haverá muitos).
Basta fazer um script com os comandos desejados.
- Feche o CMD e permita que o Windows 10 desligue/reinicialize.
O PowerShell será encerrado por padrão assim que o script for concluído. A menos que você diga especificamente para não fazer isso.
O que você parece querer são scripts de logoff e logon. É uma questão de escrevê-los e adicioná-los ao grupo de logon/logoff ou às configurações de política da máquina local.
Use o PowerShell e a Política de Grupo para seu script de logon
Usando a Política de Grupo para Implantar um Script de Logon do Windows PowerShell
*Atualização com base nos acompanhamentos abaixo *
O que você parece querer são scripts de logoff e logon. É uma questão de escrevê-los e adicioná-los ao grupo de logon/logoff ou às configurações de política da máquina local. Você pode definir as mesmas coisas para desligamento. Lembre-se de que uma reinicialização causará uma ação de logon. Também tem uma configuração política. O console do PowerShell executará qualquer comando que o cmd.exe possa. Você tem que chamá-los corretamente. Se o UAC for um problema, desative tudo junto. Embora isso signifique que você está aceitando todos os riscos de segurança ao fazer isso.
Aceitar o UAC só é possível se você estiver tentando executar um comando elevado. O PowerShell não ignorará o UAC porque você precisa fornecer credenciais de administrador. O Windows exige isso.
É para isso que serve Start-Process -Verb RunAs e tem uma opção de credencial, mas você ainda precisa fornecer isso. Então, você ainda será solicitado. Você pode salvar credenciais em um arquivo seguro para reutilização, mas deve fazer isso antes de executar qualquer script.
Você pode tentar o seguinte por sua própria conta e risco.
https://docs.microsoft.com/en-us/previous-versions/technet-magazine/cc162321(v=msdn.10)
https://github.com/sushihangover/SushiHangover-PowerShell/tree/master/modules/PSUserTools
(especificamente o script denominado Start-ProcessAsAdministrator.ps1)