Share via


Beenden eines Prozesses unter einem Benutzer

Beschreibung

In diesem Beispiel wird gezeigt, wie Sie die WindowsProcess Ressource verwenden können, um sicherzustellen, dass ein Prozess nicht ausgeführt wird, indem Sie ein angegebenes Konto verwenden, um es bei Bedarf zu beenden.

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

Mit "Sicherstellen " auf Absent" " Pfad " auf C:\Windows\System32\gpresult.exe" festgelegt" und "Argumente " auf eine leere Zeichenfolge festgelegt, beendet die Ressource den laufenden gpresult.exe Prozess. Da die Credential-Eigenschaft festgelegt ist, beendet die Ressource den Prozess als dieses Konto.

Mit Invoke-DscResource

In diesem Skript wird gezeigt, wie Sie die WindowsProcess Ressource mit dem Invoke-DscResource Cmdlet verwenden können, um sicherzustellen gpresult.exe , dass sie nicht ausgeführt wird, indem Sie sie als benutzerdefiniertes Konto beenden.

[CmdletBinding()]
param(
    [ValidateNotNullOrEmpty()]
    [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  = ''
            Credential = $Credential
            Ensure     = 'Absent'
        }
    }

    $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

In diesem Codeausschnitt wird gezeigt, wie Sie einen ConfigurationWindowsProcess Ressourcenblock definieren können, um sicherzustellen gpresult.exe , dass es nicht ausgeführt wird, indem Sie sie als benutzerspezifisches Konto beenden.

Configuration StopUnderUser {
    [CmdletBinding()]
    param(
        [ValidateNotNullOrEmpty()]
        [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  = ''
            Credential = $Credential
            Ensure     = 'Absent'
        }
    }
}