У меня есть компьютеры, подключенные к локальной сети. С одного ПК скажу: A Я хочу запустить пакетный файл, хранящийся на компьютере B. Я не хочу использовать какие-либо ресурсы A. Этот командный файл содержит ресурсочувствительный процесс. Таким образом, ресурс B должен использоваться только. Пакетный файл должен быть запущен на B, но инициирован с A.Как запустить пакетный файл на компьютере с другого компьютера?
ответ
Предполагая, что у вас достаточно привилегий и настроено WinRM.
Invoke-Command -ComputerName 'RemotePCName' -ScriptBlock { 'c:\temp\script.bat' } -Credential $(Get-Credential)
Вы должны использовать Invoke-Command и создать PSSession
И это выглядит следующим образом:
$session = New-PSSession -ComputerName "ComputerB"
Invoke-Command -Session $session -ScriptBlock { ./P:\Path\to\bat.bat }
$session | Remove-Session
Это должно быть то, что вам нужно. Если у вас есть какой-либо вывод в пакетный файл, который вы можете использовать
$session = New-PSSession -ComputerName "ComputerB"
$output = Invoke-Command -Session $session -ScriptBlock { ./P:\Path\to\bat.bat }
$session | Remove-Session
Если вам нужна $ ВАР внутри ScriptBlock вы можете использовать:
$examplePath = "P:\Path\to"
$exampleFile = "mySCript.bat"
$session = New-PSSession -ComputerName "ComputerB"
$output = Invoke-Command -Session $session -ScriptBlock { ./$args[0] + "\" + $args[1] } -ArgumentList $examplePath, $exampleFile
$session | Remove-Session
Через командный файл можно использовать WMIC или SchTasks:
1) SCHTASKS:
SCHTASKS /s remote_machine /U username /P password /create /tn "On demand demo" /tr "C:\some.bat" /sc ONCE /sd 01/01/1910 /st 00:00
SCHTASKS /s remote_machine /U username /P password /run /TN "On demand demo"
2) WMIC (WMIC возвращает идентификатор процесса запущенного процесса)
WMIC /NODE remote_machine /user user /password password process call create "c:\some.bat","c:\exec_dir"
Я пробовал SCHTASKS. Но это запустит процесс на машине A. Что мне не нужно, потому что я хочу запустить 14 таких командных файлов на 14 машинах. Я хочу, чтобы они работали на соответствующих машинах. – Ish
Возможный дубликат [Запуск пакетного файла на удаленных компьютерах с помощью PowerShell 2.0] (http://stackoverflow.com/questions/15336336/running-batch-file -on-remote-computers-using-powershell-2-0) – SomethingDark