Como iniciar um aplicativo em uma sessão existente

2

Quando uma tarefa agendada é executada, eu gostaria de abrir uma janela do Powershell na minha área de trabalho para acompanhar o arquivo de log e observar o progresso. Especificamente, gostaria que a tarefa abrasse a janela na minha área de trabalho e executasse Get-Content C:\LogFile.txt -Wait . Quando a tarefa terminar, eu gostaria de fechar a janela do PowerShell.

Existe uma maneira de iniciar uma janela gráfica sob outro usuário? Pelo que descobri, a maioria dos comandos será executada sob o privilégio do usuário especificado, mas não criará uma janela na área de trabalho deles.

Seria ainda melhor se ele fosse executado em qualquer usuário que estivesse conectado quando a tarefa fosse iniciada e não em um usuário codificado.

EDIT: Até agora eu tenho o código abaixo. Eu trabalho até certo ponto. Ele cria a janela tailing, mas quando eu chamo $p.kill() , ele mata o processo psexec, mas não o processo powershell. Posso enviar um Ctrl-C para a janela do PowerShell?

# start tailing the log
$psexec = 'c:\psexec.exe'
$arguments = '-i powershell.exe -windowstyle maximized -command "& {get-content c:\logs\task_log.log -wait}"'
$p = start-process $psexec -argumentlist $arguments -passthru
# start the task
Some-task.exe
# kill the tail
$p.kill()
    
por TwistedTech 01.05.2014 / 20:26

1 resposta

0

Primeiro, você precisará do PSExec.exe, é gratuito e fornecido pelo grupo de internals do sistema. Você quer um comando semelhante a este:

psexec \RemoteComputer "%systemroot%\system32\windowspowershell\v1.0\powershell.exe" -u username -p password -i -h

Leia o arquivo de ajuda do PSExec e brinque com as configurações. Você estará mais interessado na opção '-i', pois é o que indica a sessão com a qual interagir. Apenas usando o '-i' sem um ID de sessão (como no exemplo), psexec apenas escolhe um. Se não houver um disponível, ele usará a sessão 0.

Você pode até achar que os cmdlets New-PSSession e Enter-PSSession Powershell são mais adequados para o que você precisa. No seu computador, execute o seguinte no powershell:

$Session = New-PSSession -ComputerName computer.domain.com
Enter-PSSession -Session $Session

Quando você executa esses comandos, seu terminal em sua máquina se torna o terminal na máquina remota. Os comandos que você digita na sessão remota são executados na máquina remota e a saída é retornada à sua. Quando terminar, digite o comando Exit-PSSession para retornar à sua própria sessão.

    
por 01.05.2014 / 21:01