[#POWERSHELL] HowTo: Transformar el resultado de read-host a un String

image47dd1de4

Buenas,

en estos días de despliegue, tocan momentos divertidos para aprender  nuevas cosillas. Una de ellas, y que nos dio un dolor de cabeza de varios minutos con Javi, fue en la creación de un Application Pool utilizando PowerShell. El siguiente código está copiado 100% de un IIS.Net, para la creación de un Application Pool en un IIS 7.0.

 
   1: Import-Module WebAdministration

   2:  

   3: $userName = "ElBruno\Valentino"

   4: $password = read-host "Type user password for Application Pool for >> $userName"

   5:  

   6: write-host "set app pool properties"

   7: $appPool.processModel.userName = $userName

   8: $appPool.processModel.password = $password

   9: $appPool.managedRuntimeVersion = "v4.0"

  10: $appPool | set-item

 

Si lo pruebas en 99 entornos, seguramente funcionará correctamente, sin embargo a mi me ha tocado probarlo en ese entorno número 100 donde teníamos un error de tipo al momento de asignar la Password. Investigando un poco, he visto que la clase ReadHost no retorna un tipo string, sino algo un poco “más complicado”, por defecto el valor retornado se asigna a un tipo SecureString. De allí que al momento de asignar la Password es posible que tengamos un error de permisos o de acceso.

Pero tranquilos que la solución solo consiste en “castear” a un string el valor que retorna ReadHost. EL siguiente ejemplo, lo demuestra en la línea 3

   1: Import-Module WebAdministration

   2: $userName = "ElBruno\Valentino"

   3: [string] $password = read-host "Type user password for Application Pool for >> $userName"

   4:  

   5: write-host "set app pool properties"

   6: $appPool.processModel.userName = $userName

   7: $appPool.processModel.password = $password

   8: $appPool.managedRuntimeVersion = "v4.0"

   9: $appPool | set-item

 

Saludos @ La Finca

El Bruno

   

Referencia: http://ss64.com/ps/read-host.html

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.