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.exe
en y Arguments establecido /h C:\gp2.htm
en , 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'
}
}
}