
Estou executando um servidor de compilação no Windows Server 2008 (team city). As compilações são executadas pelo Team City Agent, que é executado como um serviço do Windows na conta LocalService.
Uma das compilações precisa copiar um arquivo zip criado para um compartilhamento remoto. Para fazer isso, tenho um script do PowerShell que tenta shell um novo processo com credenciais de um usuário com permissões apropriadas para gravar no compartilhamento. O problema é que o script não consegue criar o processo. Posso executar o script sem problemas com meu usuário administrador (então o script em si parece estar bem), isso me faz pensar que a conta LocalSystem não tem permissão para shell novos processos com credenciais diferentes ou algo parecido?
Alguma idéia do que esse erro realmente significa? Observação: não consigo ver nenhum erro nos logs de eventos de segurança, o que parece estranho (?)
$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
Erro lançado na linha Start-Process
System.InvalidOperationException: This command cannot be executed due to the error: Access is denied.
at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord)
Responder1
Verminha respostaparaEleve créditos com PowerShell via conta do sistema localno StackOverflow:
Parece haver uma restrição em certos comandos quando um script é executado emSistema Local. Isto faz sentido em termos de segurança, dado queSistema Local:
tem acesso irrestrito completo aos recursos locais. Essa também é a desvantagem do LocalSystem porque um serviço LocalSystem pode fazer coisas que derrubariam todo o sistema.
Referência:MSDN, a conta LocalSystem