
Estoy ejecutando un servidor de compilación en Windows Server 2008 (ciudad del equipo). Las compilaciones las ejecuta el agente de Team City que se ejecuta como un servicio de Windows en la cuenta LocalService.
Una de las compilaciones necesita copiar un archivo zip que crea en un recurso compartido remoto; para hacer esto, tengo un script de PowerShell que intenta generar un nuevo proceso con las credenciales de un usuario con los permisos adecuados para escribir en el recurso compartido. El problema es que el script no logra crear el proceso. Puedo ejecutar bien el script desde mi usuario administrador (por lo que el script en sí parece estar bien), esto me hace pensar que la cuenta LocalSystem no tiene algún permiso para procesar nuevos procesos con credenciales diferentes o algo así.
¿Alguna idea de lo que realmente significa este error? Nota: No veo ningún error en los registros de eventos de seguridad, lo cual parece extraño (?)
$userName = "domain\user"
$password = "password"
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist $userName, $secstr
$command = "Copy-Item d:\file.zip \\remote\share\file.zip"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
Start-Process powershell -NoNewWindow -ArgumentList "-encodedCommand", $encodedCommand -credential $credentials -wait
Error arrojado en la línea de inicio del proceso
System.InvalidOperationException: This command cannot be executed due to the error: Access is denied.
at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord)
Respuesta1
Vermi respuestaaEleve los créditos con powershell a través de la cuenta del sistema localen StackOverflow:
Parece haber una restricción en ciertos comandos cuando se ejecuta un script bajoSistema local. Esto tiene sentido en términos de seguridad, dado queSistema local:
tiene acceso total e ilimitado a los recursos locales. Esta es también la desventaja de LocalSystem porque un servicio LocalSystem puede hacer cosas que harían caer todo el sistema.
Referencia:MSDN, la cuenta del sistema local