Simplificación de la creación de runbooks de Service Management Automation con recursos globales

Importante

Esta versión de Service Management Automation (SMA) ha alcanzado el final del soporte técnico. Se recomienda actualizar a SMA 2022.

Los recursos globales están disponibles para todos los runbooks de un entorno de Automation. Puede crearlos y configurarlos mediante el área de trabajo de Automatización en el portal de administración o con los cmdlets adecuados en Windows PowerShell. Desde un runbook, puede recuperar y establecer valores para los activos globales con actividades del módulo RunbookConstructs . Los cmdlets de Windows PowerShell están disponibles para su uso en runbooks en Service Management Automation, pero las actividades se recomiendan ya que son más eficaces porque no tienen que trabajar a través del servicio web automation.

Obtención o establecimiento de credenciales

Una credencial de automatización puede ser un nombre de usuario y una contraseña que se usan con comandos de Windows PowerShell, o bien un certificado que se carga en el servidor. Las propiedades de una credencial se almacenan de forma segura en la base de datos de Automation y se puede acceder a ellas en el runbook mediante las actividades Get-AutomationPSCredential o Get-AutomationCertificate.

PowerShell para la administración de credenciales

Puede usar los cmdlets de la siguiente tabla para crear y administrar credenciales con Windows PowerShell en Service Management Automation.

Cmdlets Descripción
Get-SmaCertificate Recupera un certificado de Automation.
Get-SmaCredential Recupera una credencial de PowerShell de Automation.
Remove-SmaCertificate Elimina un certificado de Automation.
Remove-SmaCredential Elimina una credencial de PowerShell de Automation.
Set-SmaCertificate Crea un nuevo certificado o establece las propiedades de un certificado existente, e incluye la carga del archivo de certificado y el establecimiento de la contraseña de un .pfx.
Set-SmaCredential Crea una nueva credencial de PowerShell de Automation o establece las propiedades de una credencial existente.

PowerShell para el trabajo con credenciales

Puede usar las actividades de la tabla siguiente para acceder a las credenciales de un runbook.

Actividades Descripción
Get-AutomationCertificate Obtiene un certificado que se va a usar en un runbook.
Get-AutomationPSCredential Obtiene un nombre de usuario y una contraseña que se van a usar en un runbook.

Nota

Debe evitar el uso de variables en el parámetro "Name de Get-AutomationPSCredential y Get-AutomationCertificate, debido a que puede complicar la detección de dependencias entre runbooks y las variables de Automation.

Creación de una credencial de PowerShell en el Portal de administración

  1. Seleccione el área de trabajo Automatización.

  2. En la parte superior de la ventana, seleccione Activos.

  3. En la parte inferior de la ventana, seleccione Agregar configuración.

  4. Seleccione Agregar credencial.

  5. En la lista desplegable Tipo de credencial, seleccione Credencial de PowerShell.

  6. Escriba un nombre para la credencial en el cuadro Nombre .

  7. Seleccione la flecha derecha.

  8. Escriba los valores de cada propiedad.

  9. Seleccione la marca de verificación para guardar la credencial.

Creación de un certificado en el

Portal de administración

  1. Seleccione el área de trabajo Automatización.

  2. En la parte superior de la ventana, seleccione Activos.

  3. En la parte inferior de la ventana, seleccione Agregar configuración.

  4. Seleccione Agregar credencial.

  5. En la lista desplegable Tipo de credencial, seleccione Certificado.

  6. Escriba un nombre para el certificado en el cuadro Nombre .

  7. Seleccione la flecha derecha.

  8. Seleccione Buscar archivo y vaya a un archivo .cer o .pfx.

  9. Si ha seleccionado un archivo .pfx, indique su contraseña.

  10. Seleccione la marca de verificación para guardar el certificado.

Creación de una credencial con PowerShell

Los siguientes comandos de ejemplo muestran cómo crear una credencial nueva.

$webServer = 'https://MyWebServer'
$port = 9090
$credName = 'MyCredential'
$user = 'contoso\MyUser'
$pwd = ConvertTo-SecureString -String 'P@$$w0rd' -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user,$pwd

Set-SmaCredential -WebServiceEndpoint $webServer -port $port -Name $credName -Value $cred

Para crear un certificado de PowerShell nuevo con Windows PowerShell en Service Management Automation

Los siguientes comandos de ejemplo muestran cómo crear un certificado nuevo importando un archivo de certificado.

$webServer = 'https://MyWebServer'
$port = 9090
$certName = 'MyCertificate'
$path = 'c:\certs\MyCertificate.pfx'
$certPwd = ConvertTo-SecureString -String 'P@$$w0rd' -AsPlainText -Force

Set-SmaCertificate -WebServiceEndpoint $webServer -port $port -Name $certName -Path $certPath -Password $certPwd

Uso de una credencial de PowerShell en un runbook

Para recuperar una credencial de PowerShell en un runbook se usa la actividad Get-AutomationPSCredential . Esto devuelve un objeto PSCredential que puede usar en el flujo de trabajo.

  • Los comandos de ejemplo siguientes muestran cómo usar una credencial de PowerShell en un runbook. En este ejemplo, se utiliza la credencial con una actividad InlineScript para ejecutar un conjunto de comandos con credenciales alternativas.

    $myCredential = Get-AutomationPSCredential -Name 'MyCredential'
    InlineScript {
       <Commands>
    } -PSComputerName $ServerName -PSCredential $myCredential
    

Administración de conexiones de SMA

Una conexión de automatización contiene la información necesaria para conectarse a un servicio o a una aplicación desde un runbook. Esta información se define en el módulo de la aplicación y, normalmente, incluye información como el nombre de usuario, la contraseña y el equipo al que debe conectarse. También es posible que se requiera otra información como un certificado o un id. de suscripción. Las propiedades de una conexión se almacenan de forma segura en la base de datos de Automation y se puede obtener acceso a ellas en el runbook mediante la actividad Get-AutomationConnection.

Cmdlets de Windows PowerShell

Puede crear y administrar credenciales con los cmdlets de Windows PowerShell de la siguiente tabla.

Cmdlets Descripción
Get-SmaConnection Recupera los valores de cada campo en una conexión determinada.
Get-SmaConnectionField Recupera las definiciones de campos para un determinado tipo de conexión.
Get-SmaConnectionType Recupera los tipos de conexión disponibles.
New-SmaConnection Crea una conexión nueva.
Remove-SmaConnection Quita una conexión existente.
Set-SmaConnectionFieldValue Establece el valor de un campo determinado para una conexión existente.

Actividades de runbook

Puede acceder a las conexiones de un runbook con las actividades de la siguiente tabla.

Actividades Descripción
Get-AutomationConnection Obtiene una conexión que se va a usar en un runbook.

Creación de una conexión en el Portal de administración

  1. Seleccione el área de trabajo Automatización.

  2. En la parte superior de la ventana, seleccione Activos.

  3. En la parte inferior de la ventana, seleccione Agregar configuración.

  4. Seleccione Agregar conexión.

  5. En la lista desplegable Tipo de conexión, seleccione un tipo de conexión.

  6. Escriba un nombre para la conexión en el cuadro Nombre .

  7. Seleccione la flecha derecha.

  8. Escriba un valor para cada propiedad.

  9. Seleccione la marca de verificación para guardar la conexión.

Creación de una conexión con Windows PowerShell

Los comandos de ejemplo siguientes crean una nueva conexión de Virtual Machine Manager con el nombre myVMMConnection.

Nota

Usamos una tabla hash para definir las propiedades de la conexión. Esto se debe a que los distintos tipos de conexiones requieren diferentes conjuntos de propiedades. Una conexión de otro tipo usaría un conjunto diferente de valores de campo.

Para obtener más información sobre las tablas hash, consulte about_Hash_Tables.

$webServer = 'https://MyWebServer'
$port = 9090
$connectionName = 'MyConnection'
$fieldValues = @{"Username"="MyUser";"Password"="password";"ComputerName"="MyComputer"}
New-SmaConnection -WebServiceEndpoint $webServer -port $port -Name $connectionName -ConnectionTypeName "VirtualMachineManager" -ConnectionFieldValues $fieldValues

Uso de una conexión en un runbook

Use la actividad Get-AutomationConnection para usar una conexión en un runbook. Esta actividad recupera los valores de los distintos campos de la conexión y los devuelve como una tabla hash, que luego se puede usar con los comandos adecuados en el runbook.

Para obtener más información sobre las tablas hash, consulte about_Hash_Tables.

En el código de ejemplo siguiente se muestra cómo usar una conexión para indicar el nombre del equipo y las credenciales para un bloque InlineScript que ejecuta comandos en otro equipo.

$con = Get-AutomationConnection -Name 'MyConnection'
$securepassword = ConvertTo-SecureString -AsPlainText -String $con.Password -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $con.Username, $securepassword
InlineScript {
   <Commands>
} -PSComputerName $con.ComputerName -PSCredential $cred

Simplificación del desarrollo de runbooks con variables globales

Las variables de Automatización son valores que están disponibles para todos los runbooks. Puede crearlas, modificarlas y recuperarlas desde el portal de administración, Windows PowerShell o desde un runbook. Las variables de Automation son útiles para los siguientes escenarios:

  • Compartir un valor entre varios runbooks.

  • Compartir un valor entre varios trabajos del mismo runbook.

  • Administrar un valor desde el portal de administración o desde la línea de comandos de Windows PowerShell que usan los runbooks.

Las variables de Automation son persistentes, de manera que siguen estando disponibles incluso si el runbook presenta un error. Esto también permite establecer un valor mediante un runbook que, a continuación, usa otro o lo usa el mismo runbook la próxima vez que se ejecute.

Cuando se crea una variable, debe especificar su tipo de datos de la lista siguiente. Esto es para que el portal de administración pueda mostrar el control adecuado para el valor de la variable. Solo se puede asignar un valor del tipo correcto a una variable.

  • String

  • Entero

  • Boolean

  • Datetime

Cuando se crea una variable, puede especificar que se almacene cifrada. Cuando se cifra una variable, se almacena de forma segura en la base de datos SMA y su valor no se puede recuperar del cmdlet Get-SmaVariable . La única manera de recuperar un valor cifrado es con la actividad Get-AutomationVariable en un runbook. Puede almacenar varios valores del tipo definido en una sola variable mediante la creación de una tabla hash.

Cmdlets de Windows PowerShell

Puede crear y administrar variables con los cmdlets de Windows PowerShell de la siguiente tabla.

Cmdlets Descripción
Get-SmaVariable Recupera el valor de una variable existente.
Set-SmaVariable Crea una nueva variable o establece el valor de una variable existente.

Actividades de runbook

Puede acceder a las variables de un runbook con las actividades de la siguiente tabla.

Actividades Descripción
Get-AutomationVariable Recupera el valor de una variable existente.
Set-AutomationVariable Establece el valor de una variable existente.

Nota

Debe evitar usar variables en el parámetro "Name de Get-AutomationVariable porque esto puede complicar la detección de dependencias entre los runbooks y las variables de Automation.

Creación de una variable en el Portal de administración

  1. Seleccione el área de trabajo Automatización.

  2. En la parte superior de la ventana, seleccione Activos.

  3. En la parte inferior de la ventana, seleccione Agregar configuración.

  4. Seleccione Agregar variable.

  5. En la lista desplegable Tipo, seleccione un tipo de datos.

  6. Escriba un nombre para la variable en el cuadro Nombre .

  7. Seleccione la flecha derecha.

  8. Escriba un valor para la variable y especifique si se va a cifrar.

  9. Seleccione la marca de verificación para guardar la nueva variable.

Para crear una nueva variable con Windows PowerShell

El cmdlet Set-SmaVariable crea una variable nueva y establece el valor de una variable existente. Los siguientes comandos de ejemplo muestran cómo crear una variable de tipo cadena.

$web = 'https://MySMAServer'
$port = 9090

Set-SMAVariable -WebServiceEndpoint $web -Port $port -Name 'MyVariable' -Value 'My String'

Uso de una variable en un runbook

  • El código de ejemplo siguiente muestra cómo establecer y recuperar una variable en un runbook. En este ejemplo, se supone que ya se han creado variables de tipo entero denominadas NumberOfIterations y NumberOfRunnings y una variable de tipo cadena denominada SampleMessage.

    $NumberOfIterations = Get-AutomationVariable -Name 'NumberOfIterations'
    $NumberOfRunnings = Get-AutomationVariable -Name 'NumberOfRunnings'
    $SampleMessage = Get-AutomationVariable -Name 'SampleMessage'
    Write-Output "Runbook has been run $NumberOfRunnings times."
    for ($i = 1; $i -le $NumberOfIterations; $i++) {
       Write-Output "$i`: $SampleMessage"
    }
    Set-AutomationVariable -Name NumberOfRunnings -Value (NumberOfRunnings += 1)
    

Pasos siguientes