Dela via


Stoppa en process under en användare

Description

Det här exemplet visar hur du kan använda resursen WindowsProcess för att säkerställa att en process inte körs, med hjälp av ett angivet konto för att stoppa den om det behövs.

Du uppmanas att ange en autentiseringsuppgift om du inte uttryckligen skickar en med parametern Credential . Egenskapen Autentiseringsuppgifter för resursen är inställd på det här värdet.

Med Kontrollera inställt på Absent, Sökväg inställd på C:\Windows\System32\gpresult.exeoch Argument inställt på en tom sträng stoppar resursen alla processer som körs gpresult.exe . Eftersom egenskapen Credential har angetts stoppar resursen processen som det kontot.

Med Invoke-DscResource

Det här skriptet visar hur du kan använda resursen WindowsProcess med cmdleten Invoke-DscResource för att säkerställa gpresult.exe att den inte körs och stoppar den som ett användardefinerat konto.

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

Med en konfiguration

Det här kodfragmentet visar hur du kan definiera en Configuration med ett WindowsProcess resursblock för att säkerställa gpresult.exe att den inte körs, vilket stoppar den som ett användardefinieringskonto.

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