Compartir a través de


Iniciar un proceso en un usuario

Descripción

En este ejemplo se muestra cómo puede usar el WindowsProcess recurso para asegurarse de que un proceso se ejecuta en una cuenta específica.

Se le pedirá una credencial si no pasa una explícitamente con el parámetro Credential . La propiedad Credential del recurso se establece en este valor.

Con Ensure establecido en Present, Path establecido C:\Windows\System32\gpresult.exeen y Arguments establecido /h C:\gp2.htmen , el recurso comienza gpresult.exe con los argumentos especificados si no se está ejecutando. Dado que se establece la propiedad Credential , el recurso inicia el proceso como esa cuenta.

Con Invoke-DscResource

Este script muestra cómo puede usar el WindowsProcess recurso con el Invoke-DscResource cmdlet para asegurarse de que gpresult.exe se ejecuta con los argumentos /h C:\gp2.htm como una cuenta especificada por el usuario.

[CmdletBinding()]
param(
    [System.Management.Automation.PSCredential]
    [System.Management.Automation.Credential()]
    $Credential = (Get-Credential)
)

begin {
    $SharedParameters = @{
        Name       = 'WindowsFeatureSet'
        ModuleName = 'PSDscResource'
        Properties = @{
            Path       = 'C:\Windows\System32\gpresult.exe'
            Arguments  = '/h C:\gp2.htm'
            Credential = $Credential
            Ensure     = 'Present'
        }
    }

    $NonGetProperties = @(
        'Ensure'
    )
}

process {
    $TestResult = Invoke-DscResource -Method Test @SharedParameters

    if ($TestResult.InDesiredState) {
        $QueryParameters = $SharedParameters.Clone()

        foreach ($Property in $NonGetProperties) {
            $QueryParameters.Properties.Remove($Property)
        }

        Invoke-DscResource -Method Get @QueryParameters
    } else {
        Invoke-DscResource -Method Set @SharedParameters
    }
}

Con una configuración

Este fragmento de código muestra cómo se puede definir un Configuration elemento con un WindowsProcess bloque de recursos para asegurarse de que gpresult.exe se ejecuta con los argumentos /h C:\gp2.htm como una cuenta especificada por el usuario.

Configuration StartUnderUser {
    [CmdletBinding()]
    param(
       [System.Management.Automation.PSCredential]
       [System.Management.Automation.Credential()]
       $Credential = (Get-Credential)
    )

    Import-DSCResource -ModuleName 'PSDscResources'

    Node localhost {
        WindowsProcess ExampleWindowsProcess {
            Path       = 'C:\Windows\System32\gpresult.exe'
            Arguments  = '/h C:\gp2.htm'
            Credential = $Credential
            Ensure     = 'Present'
        }
    }
}