Цель состоит в том, чтобы сделать запрос XML/SOAP/WSMan из Python и Linux и установить время на удаленной машине с Windows 10.
Я могу сделать это через CMD, PowerShell или Cygwin/SSH, но мне нужен быстрый родной способ. Я много делаю через WMI, это проще и быстрее.
Я пытаюсь вызвать Win32_OperatingSystem.SetDateTime
.
Ответные сообщения SOAP/WSMan: XML- код SOAP в сообщении не соответствует определению соответствующей XML-схемы.Измените XML и повторите попытку. (расширенные данные об ошибках: {u'fault_subcode ':' w: SchemaValidationError ', u'fault_code': 's: Sender', u'wsmanfault_code ':' 2150858817 ',' transport_message ': u'Bad HTTP-ответ, возвращенный с сервера. Код 500 ',' http_status_code ': 500})
Я пытался выполнить аналогичную задачу вручную как на локальных, так и на удаленных машинах. Результаты одинаковы.
Через WMIC:
C:\Users\Administrator>wmic /node:10.254.251.2 os call SetDateTime 20180517141043.945000+000
Executing (Win32_OperatingSystem)->SetDateTime()
ERROR:
Description = Invalid method Parameter(s)
Через WinRM:
C:\Users\Administrator>winrm invoke SetDateTime wmicimv2/Win32_OperatingSystem @{LocalDateTime="20170505080808.123123+120"}
WSManFault
Message
ProviderFault
WSManFault
Message = The WS-Management service cannot process the request. The element for a datetime value must have exactly one child and no mixed content.
Error number: -2144108479 0x80338041
The SOAP XML in the message does not match the corresponding XML schema definition. Change the XML and retry.
С помощью командлетов PowerShell WMI:
PS C:\Users\Administrator> Invoke-WmiMethod -Class Win32_OperatingSystem -Name SetDateTime -ArgumentList '20180517133310.323710+000' -ComputerName 10.254.251.2
Invoke-WmiMethod : Invalid method Parameter(s)
At line:1 char:1
+ Invoke-WmiMethod -Class Win32_OperatingSystem -Name SetDateTime -Argu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Invoke-WmiMethod], ManagementException
+ FullyQualifiedErrorId : InvokeWMIManagementException,Microsoft.PowerShell.Commands.InvokeWmiMethod
Если я изменяю формат строки, я получаю Type Error
. Только с этим форматом, который кажется правильным, я получаю Invalid method Parameter(s)
.
Также я получаю неверные Invalid method Parameter(s)
при выполнении из WBEMTest
.
Я исследовал типы методов с помощью WBEMTest
. Тип параметра - CIM_DATETIME
. Что с этим не так? Как изменить время на удаленной машине?
Как установить время через WMI?
Что такое "соответствующее определение схемы" и как его получить?