Executar programa no computador remoto usando o PowerShell

5

Como posso executar um programa em uma máquina remota usando o powershell?

    
por Muhammad Hasan Khan 23.10.2009 / 13:16

6 respostas

7

A nova maneira legal de fazer isso é com o WinRM . Eu vi essa demonstração no Windows Server 2008 R2, embora haja um download com o powershell v2 & WinRM para outros sistemas operacionais Windows.

A maneira não tão legal (ou nova) de fazer isso é usar psexec , que não é powershell, mas tenho certeza que há uma maneira de invocá-lo via sintaxe powershell-esque.

    
por 23.10.2009 / 13:42
3

Você também pode usar o WMI e iniciar remotamente um processo. Não será interativo e você terá que confiar que isso terminará por conta própria. Isso não requer nada no computador remoto além de portas abertas para o WMI.

Function New-RemoteProcess {
    Param([string]$computername=$env:computername,
        [string]$cmd=$(Throw "You must enter the full path to the command which will create the process.")
    )

    $ErrorActionPreference="SilentlyContinue"

    Trap {
        Write-Warning "There was an error connecting to the remote computer or creating the process"
        Continue
    }    

    Write-Host "Connecting to $computername" -ForegroundColor CYAN
    Write-Host "Process to create is $cmd" -ForegroundColor CYAN

    [wmiclass]$wmi="\$computername\root\cimv2:win32_process"

    #bail out if the object didn't get created
    if (!$wmi) {return}

    $remote=$wmi.Create($cmd)

    if ($remote.returnvalue -eq 0) {
        Write-Host "Successfully launched $cmd on $computername with a process id of" $remote.processid -ForegroundColor GREEN
    }
    else {
        Write-Host "Failed to launch $cmd on $computername. ReturnValue is" $remote.ReturnValue -ForegroundColor RED
    }
}

Uso da amostra:

New-RemoteProcess -comp "puck" -cmd "c:\windows\notepad.exe"
    
por 09.11.2009 / 21:40
1

Aqui está o link psexec / powershell.

    
por 23.10.2009 / 16:15
1

Interessante o suficiente eu usei isso para executar o bloco de notas em um computador remoto e ele não apareceu. Eu verifiquei o Gerenciador de Tarefas e o ID do processo que a chamada retornou estava de fato lá!

O Windows declarou que esse era um conceito de segurança e o processo seria executado de forma oculta / ou em segundo plano!

    
por 03.11.2010 / 15:53
1

Este código me ajudou a executar um arquivo bat remotamente, espero que isso ajude alguém no futuro. Você precisará substituir os creds e o ComputerName vars no topo deste script.

$Username = "username"
$Password = "password"
$ComputerName = "remote.machine.hostname"
$Script = {C:\test.bat > C:\remotelog 2>&1}

#Create credential object
$SecurePassWord = ConvertTo-SecureString -AsPlainText $Password -Force
$Cred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $Username, $SecurePassWord

#Create session object with this
$Session = New-PSSession -ComputerName $ComputerName -credential $Cred

#Invoke-Command
$Job = Invoke-Command -Session $Session -Scriptblock $Script -AsJob
$Null = Wait-Job -Job $Job

#Close Session
Remove-PSSession -Session $Session
    
por 15.04.2013 / 19:32
0

RE: resposta de Nick

Sim, o PowerShell v2 (com WinRM 2.0) é fornecido com o Server 2008 R2 e o Windows 7. Uma versão de nível inferior deve estar disponível em breve para o XP, Vista, 2003 e 2008.

Você sempre tem a opção de usar o WMI também para executar coisas remotas, mas é necessário interagir com o console, o que não será um método viável.

    
por 24.10.2009 / 00:28