Share via


Starten eines Prozesses unter einem Benutzer

Beschreibung

In diesem Beispiel wird gezeigt, wie Sie die WindowsProcess Ressource verwenden können, um sicherzustellen, dass ein Prozess unter einem bestimmten Konto ausgeführt wird.

Sie werden zur Eingabe einer Anmeldeinformationen aufgefordert, wenn Sie einen nicht explizit mit dem Parameter "Anmeldeinformationen " übergeben. Die Credential-Eigenschaft der Ressource wird auf diesen Wert festgelegt.

Stellen Sie sicher, dass "PresentPfad" auf " und "Argumente" festgelegt /h C:\gp2.htmC:\Windows\System32\gpresult.exeist, beginnt gpresult.exe die Ressource mit den angegebenen Argumenten, wenn sie nicht ausgeführt wird. Da die Credential-Eigenschaft festgelegt ist, startet die Ressource den Prozess als dieses Konto.

Mit Invoke-DscResource

Dieses Skript zeigt, wie Sie die WindowsProcess Ressource mit dem Invoke-DscResource Cmdlet verwenden können, um sicherzustellen gpresult.exe , dass die Argumente /h C:\gp2.htm als benutzerdefiniertes Konto ausgeführt werden.

[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
    }
}

Mit einer Konfiguration

Dieser Codeausschnitt zeigt, wie Sie einen ConfigurationWindowsProcess Ressourcenblock definieren können, um sicherzustellen gpresult.exe , dass die Argumente /h C:\gp2.htm als benutzerdefiniertes Konto ausgeführt werden.

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'
        }
    }
}