Almacenar credenciales en powershell para automatizar procesos que requieren validación

Si necesitamos ejecutar procesos sobre maquinas remotas que estan fuera de nuestro dominio tendremos que usar el cmdlet get-credential y pasar su valor como parametro a aquellos cmdlets que lo contemplen.
Y si queremos almacenar las credenciales para dejar el proceso totalmente automatizado?
$dominio=read-host "Dominio (FQDN)?"
$file="cred.$dominio.txt"
read-host "Dominio\usuario?"| out-file $file
read-host "Contraseña a encriptar?" -assecurestring | convertfrom-securestring | out-file $file -append

De esta manera almacenamos el usuario y contraseña encriptada en un fichero de texto para luego poder usarlo en cualquier script, por ejemplo para recuperar la informacion de los discos de una maquina remota:
$credentials = get-content ("cred.$dominio.txt")
$username=$credentials[0]
$password=$credentials[1]|convertto-securestring
$cred = New-Object System.Management.Automation.PSCredential ($username, $password)
gwmi –computername $maquina win32_logicaldisk -filter "drivetype=3" -credential $cred
El cmdlet que necesitas no tiene el parametro -credential? Ejecutalo como job:
start-job -argumentlist $maquina -credential $cred -scriptblock {
 param($maquina)
 #lo que se te ocurra
  }
http://social.technet.microsoft.com/wiki/contents/articles/4546.working-with-passwords-secure-strings-and-credentials-in-windows-powershell.aspx#Best_Practices

Comentarios