Показать полную графическую версию : Помогите пожалуйста переустановить службу удаленно
Ingolder
28-08-2010, 21:19
Добрый день.
Мне требуется удалённо с помощью PowerShell Переустановить службу на удаленном компьютере с XP.
Конкретно:
остановить службу, удалить службу, проинсталлировать новую службу, запустить службу.
На cmd не предлагать, умеем :)
Пробовал остановить\запустить службу таким боком:
$b = get-wmiobject win32_service -computername 192.168.1.102 -Filter "Name = 'themes'"
$b.startservice()
выдаёт непонятное, и служба не запускается:
PS C:\Users\Admin> $b.startservice()
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 14
пробовал так:
PS C:\Users\Admin> $serviceController = (new-Object System.ServiceProcess.ServiceController("themes","192.168.1.102"))
PS C:\Users\Admin> $serviceController.Start()
Exception calling "Start" with "0" argument(s): "Cannot start service Themes on computer '192.168.1.102'."
At line:1 char:25
+ $serviceController.Start <<<< ()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Ingolder,
попробуйте так, хотя результат я не гарантирую - POSH я не знаю...
$Computer = "имя_ПК"
$serviceName = "имя_службы"
$query = "Select * from Win32_Service where name = '$serviceName'"
$rtn = Get-WmiObject -Query $query -ComputerName $computer
$rtn.stopService()
$rtn.Delete()
Ingolder
29-08-2010, 00:30
deepred, , пробовал так и сяк:
PS C:\Users\Admin> Get-WmiObject -Query "Select * from Win32_Service where name = 'Themes'" -ComputerName 192.168.1.102
Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
At line:1 char:14
+ Get-WmiObject <<<< -Query "Select * from Win32_Service where name = 'Themes'" -ComputerName 192.168.1.102
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException
+ FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
PS C:\Users\Admin> $Computer = "192.168.1.102"
PS C:\Users\Admin> $serviceName = "Themes"
PS C:\Users\Admin> $query = "Select * from Win32_Service where name = '$serviceName'"
PS C:\Users\Admin> $rtn = Get-WmiObject -Query $query -ComputerName $computer
Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
At line:1 char:21
+ $rtn = Get-WmiObject <<<< -Query $query -ComputerName $computer
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException
+ FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
Ingolder,
The RPC server is unavailable. ?»
Честно говоря - не знаю, в чем ошибка, кроме очевидной недоступности ПК...
Попробуйте посмотреть здесь (http://gallery.technet.microsoft.com/ScriptCenter/ru-ru)
Ingolder, советую для начала решить/отладить задачу локально:
"Stop-Service" (http://technet.microsoft.com/en-us/library/dd347576(printer).aspx) - остановить сервис;
"New-Service" (http://technet.microsoft.com/en-us/library/dd315247(printer).aspx) - создать сервис;
...по удалению сервиса там же:
To delete a service, use Sc.exe, or use the Get-WmiObject cmdlet to get the Win32_Service object that represents the service and then use the Delete method to delete the service. (The object that Get-Service returns does not have a delete method.) For an example, see the Examples section.
и только потом выбрать/отладить на простых примерах способ удаленного запуска, который зависит от версии PowerShell, наличия его на удаленных компьютерах, используемых учетках (домен/рабочая группа), настройках безопасности и т.п.
7 способов выполнить команду на удалённом компьютере (http://itband.ru/2009/11/remote-execution/)
Запуск процесса на удалённом компьютере – PowerShell Remoting (http://xaegr.wordpress.com/2009/02/03/remote-process-psremoting/)
Windows PowerShell: Краткий обзор удаленного управления в версии 2.0 (http://www.oszone.net/7324/Windows_PowerShell)
Ingolder
29-08-2010, 13:42
По первым ссылкам что вы дали, в примерах ничего толкового нет. Как работает psexec.exe и sc.exe я знаю, меня интересует повершелльное решение.
Invoke-command и enter-pssession тоже не помогает:
PS C:\Users\Admin> $script = {get-wmiobject win32_service -filter "name='Themes'"}
PS C:\Users\Admin> Invoke-Command -ComputerName 192.168.1.102 -ScriptBlock $script
[192.168.1.102] Connecting to remote server failed with the following error message : The WinRM client cannot process t
he request. Default authentication may be used with an IP address under the following conditions: the transport is HTTP
S or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure Tru
stedHosts. Note that computers in the TrustedHosts list might not be authenticated. For more information on how to set
TrustedHosts run the following command: winrm help config. For more information, see the about_Remote_Troubleshooting H
elp topic.
+ CategoryInfo : OpenError: (:) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionStateBroken
PS C:\Users\Admin>
PS C:\Users\Admin> Enter-PSSession 192.168.1.102
Enter-PSSession : Connecting to remote server failed with the following error message : The WinRM client cannot process
the request. Default authentication may be used with an IP address under the following conditions: the transport is HT
TPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure T
rustedHosts. Note that computers in the TrustedHosts list might not be authenticated. For more information on how to se
t TrustedHosts run the following command: winrm help config. For more information, see the about_Remote_Troubleshooting
Help topic.
At line:1 char:16
+ Enter-PSSession <<<< 192.168.1.102
+ CategoryInfo : InvalidArgument: (192.168.1.102:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed
Компьютер доступен, с отключенным фаерволом.
Остальные статьи пока что читаю.. но cmd, вбскрипт и прочее - не интересует.
Ingolder, с локальной реализацией проблемы есть?
в примерах ничего толкового нет »по ссылкам есть всё необходимое, включая настройки, которые нужно произвести на компе, чтобы на нём можно было удаленно использовать PowerShell (по умолчанию всё отключено), если не понятны сообщения об ошибках - отлаживайте скрипты на локализованной Windows, обращайтесь по имени вместо IP
Ingolder
29-08-2010, 15:31
Локально - всё работает (на семёрке). Проблема в удалёнке.
WinRM не катит, потому что на удалённом компе ХР, WinRM нету на ОС ниже висты.
Powershell Remoting и прочие методы я вам уже показывал что выдаёт. Прочитал все ваши статьи, спасибо, но решения не вижу.
Ingolder,
Не ждите готового решения - за Вас никто ничего не настроит...
Default authentication may be used with an IP address under the following conditions: the transport is HTTP
S or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure Tru
stedHosts. Note that computers in the TrustedHosts list might not be authenticated. For more information on how to set
TrustedHosts run the following command: winrm help config. For more information, see the about_Remote_Troubleshooting H
elp topic. »
Connecting to remote server failed with the following error message : The WinRM client cannot process
the request »
и только потом выбрать/отладить на простых примерах способ удаленного запуска, который зависит от версии PowerShell, наличия его на удаленных компьютерах, используемых учетках (домен/рабочая группа), настройках безопасности и т.п. »
Когда Вы выполните все перечисленные требования у Вас все заработает...
WinRM не катит, потому что на удалённом компе ХР, WinRM нету на ОС ниже висты »
в PowerShell на русской WIN запустите команду "Help about_Remote_FAQ":
Для удаленной работы на локальном и удаленном компьютерах должны быть установлены следующие компоненты: Windows PowerShell, Microsoft .NET Framework 2.0 и протокол WS-Management. Все файлы и другие ресурсы, необходимые для выполнения конкретной команды, должны находиться на удаленном компьютере.
Пользователю необходимо располагать разрешением на подключение к удаленному компьютеру, разрешением на запуск Windows PowerShell, а также разрешением на доступ к хранилищам данных (таким как файлы и папки) и реестру на удаленном компьютере.
Дополнительные сведения см. в разделе about_Remote_Requirements.
WS-Management версии 1.1 (http://www.microsoft.com/Downloads/details.aspx?displaylang=ru&FamilyID=845289ca-16cc-4c73-8934-dd46b5ed1d33)WS-Management (также называется WinRM) OOB - это специальный выпуск для поддержки функции WS-Management на следующих платформах: Windows XP с пакетом обновления 2, Windows Server 2003 с пакетом обновления 1, Windows Server 2003 с пакетом обновления 2, Windows 2003 Server R2.
Ingolder
31-08-2010, 13:23
amel27, правильно, winrm не катит, потому что на уалённом компе нет повершелла.
Поэтому, deepred, ваше решение не подходит. Без этого, как я понимаю, невозможно вообще.
Ingolder, решение deepred не требует PowerShell на удаленном компе, т.к. использует доступ через WMI, если выдается ошибка RPC, значит вас не пускает на удаленный компьютер по DCOM и этот метод не будет работать и через VBS/CMD пока не разберетесь с безопасностью
Ingolder
02-09-2010, 18:14
но ведь фаервол отключен. В чём может быть косяк?
удаленный вызов RPC включен.
Ingolder, под какой учеткой запускаете скрипт... в идеале это должна быть доменная учетка, включенная в группу локальных админов удаленного компьютера
amel27,
Спасибо за пояснение - Ingolder, решение deepred »
Ingolder,
Для того, чтобы воспользоваться доступом по WMI - следует для него настроить
параметры безопасности, т.е. выполнить рекомендацию amel27 (post #14) и
проверить "WMI security settings" в MMC Я Вам собственно предложил вариант
такого доступа, предполагая отсутствие POSH на удаленном ПК.
И вопрос - почему POSH?
PS: Ingolder, как у Вас обстоят дела в решение вопроса Разное - Автоматический вход пользователя в домен. (http://forum.oszone.net/thread-182245.html).
Могу Вам еще посоветовать направить поиск в сторону GINA.dll
Ingolder
12-09-2010, 16:48
Ingolder, под какой учеткой запускаете скрипт... в идеале это должна быть доменная учетка, включенная в группу локальных админов удаленного компьютера »
Так и есть
Выяснилось новое обстоятельство. Почему-то всё это работает, но не на всех компьютерах.Я тупо пробовал сделать предложенные вами операции на другом компе с XP, не отличающейся (видимо) от моего компа на котором я тестил, и всё заработало. Остаётся непонятным, почему на некоторых компах в сети всё-таки это не работает (речь идёт о Get-WmiObject).
deepred, Powershell - потому, что я изучаю powershell. Ничего предвзято-принципиального.
Извините что редко отвечаю, не всегда есть возможность с вами общаться :)
Остаётся непонятным, почему на некоторых компах в сети всё-таки это не работает »может быть всё что угодно: "хвосты" кривых политик безопасности, нерабочий WMI и т.п. ИМХО проще переустановить WIN, чем искать концы...
Ingolder
16-09-2010, 11:42
Может и так.. но компов много и ничего переустанавливать никто не собирается. )
Теперь не ясна такая фишка. при проверке наличия службы таким образом:
$rtn = Get-WmiObject -Query "Select * from Win32_Service where name = 'Themes'" -ComputerName $ip
if ($rtn -ne ""){
$rtn.StopService()
$rtn.Delete()
......
}
$rtn будет выдавать $null не только когда служба отсутствует, но и когда нет доступа к компьютеру, выключен сервер rpc и прочих проблемах. Как проверить сначала, есть ли доступ к компу? или как там реализовать такую проверку ? ...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.