Выполните программу на использовании удаленного компьютера PowerShell

Связка ключей. Я попробовал 1password, но связка ключей делает то, что мне нужна она, чтобы сделать, и мне нравится способ, которым она работает лучше.

5
задан 23 October 2009 в 14:16
6 ответов

Прохладный новый способ сделать это с WinRM. Я видел этот demo'd на Windows Server 2008 R2, хотя существует загрузка с powershell v2 и WinRM для других операционных систем Windows.

Не так прохладный (или новый) способ сделать это должно использовать psexec, который не является powershell, но я уверен, что существует некоторый способ вызвать его через powershell-esque синтаксис.

7
ответ дан 3 December 2019 в 01:03

Вот ссылка psexec/powershell.

1
ответ дан 3 December 2019 в 01:03

РЕ: ответ Nick's

Да, PowerShell v2 (с WinRM 2.0) связывается Сервером 2 008 R2 и Windows 7. Версия низкого уровня должна скоро быть доступна для XP, Vista, 2003 и 2008.

У Вас всегда есть опция использования WMI также для выполнения удаленного материала, но это, должен взаимодействовать с консолью, которая не будет жизнеспособным методом.

0
ответ дан 3 December 2019 в 01:03

Вы могли также использовать WMI и удаленно запустить процесс. Это не будет интерактивным, и необходимо будет положить, что это закончится самостоятельно. Это ничего не требует на удаленном компьютере кроме открытых портов для 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
    }
}

Демонстрационное использование:

New-RemoteProcess -comp "puck" -cmd "c:\windows\notepad.exe"
3
ответ дан 3 December 2019 в 01:03
  • 1
    я получаю ошибки на этом и я не могу сказать, что это происходит. Там какой-либо путь состоит в том, чтобы распечатать ошибку? –  Gabriel Guimarães 26 October 2010 в 17:48

Достаточно интересный я использовал это для выполнения блокнота на удаленном компьютере, и это не появилось. Я проверил Диспетчер задач и идентификатор процесса, которым отвеченный звонок был действительно там!

Windows указал, что это было понятием безопасности, и процесс выполнит скрытый / или в фоновом режиме!

1
ответ дан 3 December 2019 в 01:03

Этот код помог мне удаленно выполнить bat-файл, надеюсь, это поможет кому-то в будущем. Вам нужно будет заменить переменные creds и ComputerName в верхней части этого скрипта.

$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
1
ответ дан 3 December 2019 в 01:03

Теги

Похожие вопросы