Gostaria de reiniciar um computador remoto que pertence a um domínio. Eu tenho uma conta de administrador, mas não sei como usá-la no PowerShell.
Sei que existe um Restart-Computer
cmdlet e que posso passar credenciais, mas se meu domínio for, por exemplo mydomain
, meu nome de usuário myuser
e minha senha, mypassword
qual é a sintaxe correta para usá-lo?
Preciso agendar a reinicialização para não precisar digitar a senha.
powershell
powershell-remoting
todos olham para mim
fonte
fonte
Respostas:
O problema
Get-Credential
é que ele sempre solicitará uma senha. No entanto, existe uma maneira de contornar isso, mas envolve armazenar a senha como uma string segura no sistema de arquivos.O artigo a seguir explica como isso funciona:
Em resumo, você cria um arquivo para armazenar sua senha (como uma sequência criptografada). A linha a seguir solicitará uma senha e a armazenará
c:\mysecurestring.txt
como uma sequência criptografada. Você só precisa fazer isso uma vez:Onde quer que você veja um
-Credential
argumento em um comando do PowerShell, isso significa que você pode passar aPSCredential
. Então, no seu caso:Você pode precisar de um
-Authentication
valor de switch diferente, porque eu não conheço seu ambiente.fonte
ConvertTo-SecureString "password" -AsPlainText -Force
.$password = ConvertTo-SecureString "password" -AsPlainText -Force
Existe outra maneira, mas ...
NÃO FAÇA ISTO SE NÃO QUER SUA SENHA NO ARQUIVO DE SCRIPT (não é uma boa ideia armazenar senhas em scripts, mas alguns de nós gostam de saber como).
Ok, esse foi o aviso, aqui está o código:
$cred
terá as credenciais de John Doe com a senha "ABCDEF".Meios alternativos para preparar a senha para uso:
fonte
Em relação ao armazenamento de credenciais, eu uso duas funções (normalmente em um módulo carregado no meu perfil):
E este:
Você usa assim:
Se o arquivo de credencial não existir, você será solicitado na primeira vez; nesse momento, ele armazenará as credenciais em uma sequência criptografada dentro de um arquivo XML. Na segunda vez em que você executa essa linha, o xmlfile está lá e será aberto automaticamente.
fonte
Preciso executar as funções do SCOM 2012 em um servidor remoto que exija uma credencial diferente. Evito senhas de texto não criptografado, transmitindo a saída de uma função de descriptografia de senha como entrada para ConvertTo-SecureString. Para maior clareza, isso não é mostrado aqui.
Eu gosto de digitar fortemente minhas declarações. A declaração de tipo para $ strPass funciona corretamente.
fonte
Aqui estão duas maneiras de fazer isso, se você estiver agendando a reinicialização.
Primeiro, você pode criar uma tarefa em uma máquina usando credenciais com direitos necessários para conectar e reiniciar outra máquina. Isso torna o agendador responsável por armazenar com segurança as credenciais. O comando reboot (eu sou do tipo Powershell, mas isso é mais limpo.) É:
SHUTDOWN /r /f /m \\ComputerName
A linha de comando para criar uma tarefa agendada na máquina local, para reiniciar outra remotamente, seria:
SCHTASKS /Create /TN "Reboot Server" /TR "shutdown.exe /r /f /m \\ComputerName" /SC ONCE /ST 00:00 /SD "12/24/2012" /RU "domain\username" /RP "password"
Prefiro a segunda maneira, em que você usa suas credenciais atuais para criar uma tarefa agendada que é executada com a conta do sistema em uma máquina remota.
SCHTASKS /Create /TN "Reboot Server" /TR "shutdown.exe /r /f" /SC ONCE /ST 00:00 /SD "12/24/2012" /RU SYSTEM /S ComputerName
Isso também funciona através da GUI, basta digitar SYSTEM como o nome do usuário, deixando os campos da senha em branco.
fonte
Tenha muito cuidado ao armazenar senhas dessa maneira ... não é tão seguro quanto ...
fonte
Eu vi um exemplo que usa Import / Export-CLIXML.
Esses são os meus comandos favoritos para o problema que você está tentando resolver. E a maneira mais simples de usá-los é.
Portanto, se o arquivo não existir localmente, ele solicitará as credenciais e as armazenará. Isso exigirá um
[pscredential]
objeto sem problemas e ocultará as credenciais como uma sequência segura.Finalmente, basta usar a credencial como você normalmente faz.
Nota sobre o Securty :
Armazene credenciais com segurança no disco
Editar: basta reler a pergunta original. O procedimento acima funcionará desde que você inicialize
[pscredential]
o disco rígido. Ou seja, se você soltar isso em seu script e executar o script, uma vez que ele criará esse arquivo e, em seguida, executar o script sem supervisão será simples.fonte
Solução
Para máquinas de compilação
No código anterior, substitua os valores de nome de usuário e senha por variáveis de ambiente secretas ("ocultas dos logs") da sua máquina de compilação
Resultados do teste por
e você verá
fonte
por que você não tenta algo muito simples?
use psexec com o comando 'shutdown / r / f / t 0' e uma lista de PCs do CMD.
fonte