Войти

Показать полную графическую версию : [решено] запуск на удаленной машине bat-файл с помощью psexec


ejik_off
09-08-2010, 10:20
Добрый день Всем!!!
Подскажите что делаю не так, задача такая : на нескольких машинах в сети нужно запустить скрипт от имени администратора. Знаю что с помощью PSEXEC это возможно, но не работает. Запускаю такую команду psexec @d:\comp.txt cmd "\\192.168.113.4\distr\batfiles\FixWSUSClient.bat" при этом выходит сообщение:
\\ ■c:
Couldn't access ■c:
т.е подключение идет по первой букве имени машины.
Вопрос почему берется первая буква, а не всё имя машины?

Petya V4sechkin
09-08-2010, 10:38
ejik_off, опцию -c использовать не хотите?
psexec @d:\comp.txt -c FixWSUSClient.cmd
Файл comp.txt как выглядит?

ejik_off
09-08-2010, 12:19
имя машины.домен, каждое имя на отдельной строке
вот так:
test-01.domain.ru
test-02.domain.ru
test-03.domain.ru

и т.д
о опции -с я не заметил описаний в хелпе
сейчас почитаю.

ejik_off
09-08-2010, 13:38
psexec @d:\comp.txt -c FixWSUSClient.cmd »
тот же результат

Petya V4sechkin
09-08-2010, 13:44
Couldn't access ■c:
т.е подключение идет по первой букве имени машины.
Не похоже на букву.
Кодировка comp.txt какая? Прикрепите файл к посту.

ejik_off
09-08-2010, 15:00
Petya V4sechkin, а про кодировку я и не подумал. стоит unicode
http://forum.oszone.net/attachment.php?attachmentid=49233&stc=1&d=1281351596

Petya V4sechkin
09-08-2010, 15:04
ejik_off, не надо Unicode, сделайте в обычной ANSI.

ejik_off
09-08-2010, 15:15
этот файл создает powershell
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("fs", $false)
$WSUScomps = $wsus.GetComputerTargets()
$WSUSCompNames = $WSUScomps | ForEach { $_.FullDomainName.ToUpper() }
$ADcomps = (new-object System.DirectoryServices.DirectorySearcher([ADSI]"LDAP://dc=npfcapital,dc=kz","(&(objectCategory=computer)(!userAccountControl:1.2.840.113556.1.4.803:=2))")).findAll()
$ADCompNames = $ADcomps | ForEach {$_.GetDirectoryEntry().dNSHostName.ToString().ToUpper()}
$NoWSUSCompNames = $ADCompNames | Where { $WSUSCompNames -notcontains $_ }
$NoWSUSCompNames | out-file d:\nowsclt.txt
как задать нужную кодировку?

Petya V4sechkin
09-08-2010, 15:30
ejik_off, добавьте в конце опцию -encoding ASCII

ejik_off
10-08-2010, 09:35
Petya V4sechkin, спасибо!!!

Seryoga204
16-09-2010, 19:31
Подскажите пожалуйста пробую использовать данный скрипт:
On Error Resume Next
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
CompName = "CompName" 'имя компьютера
UserName = "Domain\User" 'имя пользователя
Pass = "Pass" 'пароль пользователя
Set objServices = objSWbemLocator.ConnectServer(CompName, "root\CIMV2", UserName, Pass, Null, Null, 0)
If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If
Set objClass = objServices.Get("Win32_Process")
Res = objClass.Create("notepad.exe", Null, Null, PID)
If Res <> 0 Then
WScript.Echo "Код ошибки: " & Res
End If
Но при запуске вылетает сообщение
http://s50.radikal.ru/i128/1009/0c/16ceb3c908fat.jpg (http://radikal.ru/F/s50.radikal.ru/i128/1009/0c/16ceb3c908fa.png.html)
Служба "DCOM Server Process Launcher" запущена на обоих компьютерах.




© OSzone.net 2001-2012