O objetivo é fazer a solicitação XML / SOAP / WSMan do Python e do Linux e definir a hora na máquina remota do Windows 10.
Eu posso fazer isso via CMD, PowerShell ou Cygwin / SSH, mas preciso de um modo nativo rápido. Eu estou fazendo muito via WMI, é mais simples e rápido.
Eu tento invocar Win32_OperatingSystem.SetDateTime
.
Resposta SOAP / WSMan contém: The SOAP XML in the message does not match the corresponding XML schema definition. Change the XML and retry. (extended fault data: {u'fault_subcode': 'w:SchemaValidationError', u'fault_code': 's:Sender', u'wsmanfault_code': '2150858817', 'transport_message': u'Bad HTTP response returned from server. Code 500', 'http_status_code': 500})
Eu tentei realizar tarefas semelhantes manualmente em computadores locais e remotos. Os resultados são os mesmos.
Via 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)
Via 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.
Os cmdlets WMI da Via PowerShell:
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
Se eu alterar o formato da string, receberei Type Error
. Apenas com este formato, que parece estar correto, recebo Invalid method Parameter(s)
.
Também recebo Invalid method Parameter(s)
ao executar a partir de WBEMTest
.
Eu explorei tipos de métodos com WBEMTest
. O tipo de parâmetro é CIM_DATETIME
. O que há de errado com isso? Como mudo o tempo na máquina remota?
Como faço para definir o tempo via WMI?
Qual é a "definição de esquema correspondente" e como posso obtê-la?