Frequentemente precisamos que um determinado comando de um script execute com um usuario diferente, ou até mesmo que um usuario sem privilegios administrativos execute uma determinada aplicação. Para isso o Powershell possui um tipo de objeto chamado PSCredentials(System.Management.Automation.PSCredential), podemos entao criar um novo objeto e guardá-lo dentro de uma variavel para utilizar em comandos que oferecem suporte a credenciais customizadas.
Primeiro precisamos de uma senha, mas para utilizá-la, devemos convertê-la para um tipo seguro. para isso vamos utilizar o comando: ConvertTo-SecureString
$passwd = ConvertTo-SecureString -String“S3nh@S3gur4” -AsPlainText-Force
Após armazenarmos a senha dentro de uma variavel podemos criar a nossa credencial. Neste caso iremos utilizar o usuario administrador local da maquina mas isso pode ser feito com qualquer usuario.
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList (“$env:computernameadministrador”,$passwd)
Pronto! Ja temos nossa credencial salva. Agora ja podemos utilizá-la em qualquer comando do script. No exemplo vamos iniciar o Notepad.exe utilizando o parâmetro –Credential:
Start-Process -FilePath “C:WindowsSystem32notepad.exe” -Credential $credential
Bom, por hoje é só. Até a proxima!
2 Comments
Alguma forma de enviar credencias(senhas) remotamente utilizando o Invoke-Command que não seja em texto puro pelo ArgumentList?
Voce pode armazenar removamente um objeto da credencial e criptografar o arquivo, ou passar ja o Objeto de credencial como parametro
Invoke-Command -ScriptBlock { Param( $Credencial ) } -ArgumentList $Credential