winrm 1.7.3 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +10 -10
- data/.rspec +3 -3
- data/.travis.yml +12 -12
- data/Gemfile +9 -9
- data/LICENSE +202 -202
- data/README.md +213 -194
- data/Rakefile +36 -36
- data/Vagrantfile +9 -9
- data/WinrmAppveyor.psm1 +32 -0
- data/appveyor.yml +51 -42
- data/bin/rwinrm +97 -97
- data/changelog.md +3 -0
- data/lib/winrm.rb +42 -42
- data/lib/winrm/command_executor.rb +6 -2
- data/lib/winrm/command_output_decoder.rb +53 -53
- data/lib/winrm/exceptions/exceptions.rb +57 -57
- data/lib/winrm/helpers/iso8601_duration.rb +58 -58
- data/lib/winrm/helpers/powershell_script.rb +42 -42
- data/lib/winrm/http/response_handler.rb +82 -82
- data/lib/winrm/http/transport.rb +17 -0
- data/lib/winrm/output.rb +43 -43
- data/lib/winrm/soap_provider.rb +39 -39
- data/lib/winrm/version.rb +1 -1
- data/lib/winrm/winrm_service.rb +550 -547
- data/preamble +17 -17
- data/spec/auth_timeout_spec.rb +16 -16
- data/spec/cmd_spec.rb +102 -102
- data/spec/command_executor_spec.rb +27 -10
- data/spec/command_output_decoder_spec.rb +37 -37
- data/spec/config-example.yml +19 -19
- data/spec/exception_spec.rb +50 -50
- data/spec/issue_184_spec.rb +67 -67
- data/spec/issue_59_spec.rb +23 -23
- data/spec/matchers.rb +74 -74
- data/spec/output_spec.rb +110 -110
- data/spec/powershell_spec.rb +97 -97
- data/spec/response_handler_spec.rb +59 -59
- data/spec/spec_helper.rb +73 -73
- data/spec/stubs/responses/get_command_output_response.xml.erb +13 -13
- data/spec/stubs/responses/open_shell_v1.xml +19 -19
- data/spec/stubs/responses/open_shell_v2.xml +20 -20
- data/spec/stubs/responses/soap_fault_v1.xml +36 -36
- data/spec/stubs/responses/soap_fault_v2.xml +42 -42
- data/spec/stubs/responses/wmi_error_v2.xml +41 -41
- data/spec/transport_spec.rb +139 -124
- data/spec/winrm_options_spec.rb +76 -76
- data/spec/winrm_primitives_spec.rb +51 -51
- data/spec/wql_spec.rb +14 -14
- data/winrm.gemspec +40 -40
- metadata +4 -3
@@ -1,13 +1,13 @@
|
|
1
|
-
<s:Envelope xmlns:a='http://schemas.xmlsoap.org/ws/2004/08/addressing' xml:lang='en-US' xmlns:p='http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd' xmlns:rsp='http://schemas.microsoft.com/wbem/wsman/1/windows/shell' xmlns:s='http://www.w3.org/2003/05/soap-envelope' xmlns:w='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'>
|
2
|
-
<s:Header>
|
3
|
-
</s:Header>
|
4
|
-
<s:Body>
|
5
|
-
<rsp:ReceiveResponse>
|
6
|
-
<rsp:Stream CommandId='<%= command_id %>' Name='stdout'><%= test_data_stdout %></rsp:Stream>
|
7
|
-
<rsp:Stream CommandId='<%= command_id %>' End='true' Name='stderr'><%= test_data_stderr %></rsp:Stream>
|
8
|
-
<rsp:CommandState CommandId='<%= command_id %>' State='http://schemas.microsoft.com/wbem/wsman/1/windows/shell/CommandState/Done'>
|
9
|
-
<rsp:ExitCode>0</rsp:ExitCode>
|
10
|
-
</rsp:CommandState>
|
11
|
-
</rsp:ReceiveResponse>
|
12
|
-
</s:Body>
|
13
|
-
</s:Envelope>
|
1
|
+
<s:Envelope xmlns:a='http://schemas.xmlsoap.org/ws/2004/08/addressing' xml:lang='en-US' xmlns:p='http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd' xmlns:rsp='http://schemas.microsoft.com/wbem/wsman/1/windows/shell' xmlns:s='http://www.w3.org/2003/05/soap-envelope' xmlns:w='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'>
|
2
|
+
<s:Header>
|
3
|
+
</s:Header>
|
4
|
+
<s:Body>
|
5
|
+
<rsp:ReceiveResponse>
|
6
|
+
<rsp:Stream CommandId='<%= command_id %>' Name='stdout'><%= test_data_stdout %></rsp:Stream>
|
7
|
+
<rsp:Stream CommandId='<%= command_id %>' End='true' Name='stderr'><%= test_data_stderr %></rsp:Stream>
|
8
|
+
<rsp:CommandState CommandId='<%= command_id %>' State='http://schemas.microsoft.com/wbem/wsman/1/windows/shell/CommandState/Done'>
|
9
|
+
<rsp:ExitCode>0</rsp:ExitCode>
|
10
|
+
</rsp:CommandState>
|
11
|
+
</rsp:ReceiveResponse>
|
12
|
+
</s:Body>
|
13
|
+
</s:Envelope>
|
@@ -1,19 +1,19 @@
|
|
1
|
-
<s:Envelope xml:lang='en-US' xmlns:s='http://www.w3.org/2003/05/soap-envelope' xmlns:a='http://schemas.xmlsoap.org/ws/2004/08/addressing' xmlns:w='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'>
|
2
|
-
<s:Header>
|
3
|
-
<a:Action>http://schemas.xmlsoap.org/ws/2004/09/transfer/CreateResponse</a:Action>
|
4
|
-
<a:MessageID>uuid:94D35B73-3DD8-428D-9495-7AF3F0559428</a:MessageID>
|
5
|
-
<a:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:To>
|
6
|
-
<a:RelatesTo>uuid:EEF803CE-B9A6-48C1-BF00-90C6F077EC2A</a:RelatesTo>
|
7
|
-
</s:Header>
|
8
|
-
<s:Body>
|
9
|
-
<x:ResourceCreated xmlns:w='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd' xmlns:a='http://schemas.xmlsoap.org/ws/2004/08/addressing' xmlns:x='http://schemas.xmlsoap.org/ws/2004/09/transfer' xmlns:rsp='http://schemas.microsoft.com/wbem/wsman/1/windows/shell'>
|
10
|
-
<a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address>
|
11
|
-
<a:ReferenceParameters>
|
12
|
-
<w:ResourceURI>http://schemas.microsoft.com/wbem/wsman/1/windows/shell/cmd</w:ResourceURI>
|
13
|
-
<w:SelectorSet>
|
14
|
-
<w:Selector Name='ShellId'>uuid:739990FF-1492-4CDD-80BB-6E07ADB06D85</w:Selector>
|
15
|
-
</w:SelectorSet>
|
16
|
-
</a:ReferenceParameters>
|
17
|
-
</x:ResourceCreated>
|
18
|
-
</s:Body>
|
19
|
-
</s:Envelope>
|
1
|
+
<s:Envelope xml:lang='en-US' xmlns:s='http://www.w3.org/2003/05/soap-envelope' xmlns:a='http://schemas.xmlsoap.org/ws/2004/08/addressing' xmlns:w='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'>
|
2
|
+
<s:Header>
|
3
|
+
<a:Action>http://schemas.xmlsoap.org/ws/2004/09/transfer/CreateResponse</a:Action>
|
4
|
+
<a:MessageID>uuid:94D35B73-3DD8-428D-9495-7AF3F0559428</a:MessageID>
|
5
|
+
<a:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:To>
|
6
|
+
<a:RelatesTo>uuid:EEF803CE-B9A6-48C1-BF00-90C6F077EC2A</a:RelatesTo>
|
7
|
+
</s:Header>
|
8
|
+
<s:Body>
|
9
|
+
<x:ResourceCreated xmlns:w='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd' xmlns:a='http://schemas.xmlsoap.org/ws/2004/08/addressing' xmlns:x='http://schemas.xmlsoap.org/ws/2004/09/transfer' xmlns:rsp='http://schemas.microsoft.com/wbem/wsman/1/windows/shell'>
|
10
|
+
<a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address>
|
11
|
+
<a:ReferenceParameters>
|
12
|
+
<w:ResourceURI>http://schemas.microsoft.com/wbem/wsman/1/windows/shell/cmd</w:ResourceURI>
|
13
|
+
<w:SelectorSet>
|
14
|
+
<w:Selector Name='ShellId'>uuid:739990FF-1492-4CDD-80BB-6E07ADB06D85</w:Selector>
|
15
|
+
</w:SelectorSet>
|
16
|
+
</a:ReferenceParameters>
|
17
|
+
</x:ResourceCreated>
|
18
|
+
</s:Body>
|
19
|
+
</s:Envelope>
|
@@ -1,20 +1,20 @@
|
|
1
|
-
<?xml version="1.0"?>
|
2
|
-
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:x="http://schemas.xmlsoap.org/ws/2004/09/transfer" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns:rsp="http://schemas.microsoft.com/wbem/wsman/1/windows/shell" xmlns:p="http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd" xml:lang="en-US">
|
3
|
-
<s:Header>
|
4
|
-
<a:Action>http://schemas.xmlsoap.org/ws/2004/09/transfer/CreateResponse</a:Action>
|
5
|
-
<a:MessageID>uuid:9FF5B7FE-CC97-4FA4-B51F-E4220C016AE7</a:MessageID>
|
6
|
-
<a:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:To>
|
7
|
-
<a:RelatesTo>uuid:EA2A7785-D8E6-4E28-8AD8-FC27156537B3</a:RelatesTo>
|
8
|
-
</s:Header>
|
9
|
-
<s:Body>
|
10
|
-
<x:ResourceCreated>
|
11
|
-
<a:Address>http://localhost:5985/wsman</a:Address>
|
12
|
-
<a:ReferenceParameters>
|
13
|
-
<w:ResourceURI>http://schemas.microsoft.com/wbem/wsman/1/windows/shell/cmd</w:ResourceURI>
|
14
|
-
<w:SelectorSet>
|
15
|
-
<w:Selector Name="ShellId">62DE33F0-8674-43D9-B6A5-3298012CC4CD</w:Selector>
|
16
|
-
</w:SelectorSet>
|
17
|
-
</a:ReferenceParameters>
|
18
|
-
</x:ResourceCreated>
|
19
|
-
</s:Body>
|
20
|
-
</s:Envelope>
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:x="http://schemas.xmlsoap.org/ws/2004/09/transfer" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns:rsp="http://schemas.microsoft.com/wbem/wsman/1/windows/shell" xmlns:p="http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd" xml:lang="en-US">
|
3
|
+
<s:Header>
|
4
|
+
<a:Action>http://schemas.xmlsoap.org/ws/2004/09/transfer/CreateResponse</a:Action>
|
5
|
+
<a:MessageID>uuid:9FF5B7FE-CC97-4FA4-B51F-E4220C016AE7</a:MessageID>
|
6
|
+
<a:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:To>
|
7
|
+
<a:RelatesTo>uuid:EA2A7785-D8E6-4E28-8AD8-FC27156537B3</a:RelatesTo>
|
8
|
+
</s:Header>
|
9
|
+
<s:Body>
|
10
|
+
<x:ResourceCreated>
|
11
|
+
<a:Address>http://localhost:5985/wsman</a:Address>
|
12
|
+
<a:ReferenceParameters>
|
13
|
+
<w:ResourceURI>http://schemas.microsoft.com/wbem/wsman/1/windows/shell/cmd</w:ResourceURI>
|
14
|
+
<w:SelectorSet>
|
15
|
+
<w:Selector Name="ShellId">62DE33F0-8674-43D9-B6A5-3298012CC4CD</w:Selector>
|
16
|
+
</w:SelectorSet>
|
17
|
+
</a:ReferenceParameters>
|
18
|
+
</x:ResourceCreated>
|
19
|
+
</s:Body>
|
20
|
+
</s:Envelope>
|
@@ -1,36 +1,36 @@
|
|
1
|
-
<s:Envelope xml:lang='en-US' xmlns:s='http://www.w3.org/2003/05/soap-envelope' xmlns:a='http://schemas.xmlsoap.org/ws/2004/08/addressing' xmlns:x='http://schemas.xmlsoap.org/ws/2004/09/transfer' xmlns:e='http://schemas.xmlsoap.org/ws/2004/08/eventing' xmlns:n='http://schemas.xmlsoap.org/ws/2004/09/enumeration' xmlns:w='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'>
|
2
|
-
<s:Header>
|
3
|
-
<a:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/fault</a:Action>
|
4
|
-
<a:MessageID>uuid:AF8907B2-F47E-4DE5-A4AA-E1EC36EA0E49</a:MessageID>
|
5
|
-
<a:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:To>
|
6
|
-
<a:RelatesTo>uuid:B90EC4BB-4484-4ADA-920B-019517747915</a:RelatesTo>
|
7
|
-
</s:Header>
|
8
|
-
<s:Body>
|
9
|
-
<s:Fault>
|
10
|
-
<s:Code>
|
11
|
-
<s:Value>s:Sender</s:Value>
|
12
|
-
<s:Subcode>
|
13
|
-
<s:Value>n:CannotProcessFilter</s:Value>
|
14
|
-
</s:Subcode>
|
15
|
-
</s:Code>
|
16
|
-
<s:Reason>
|
17
|
-
<s:Text xml:lang='en-US'>
|
18
|
-
The data source could not process the filter. The filter might be
|
19
|
-
missing or it might be invalid. Change the filter and try the request
|
20
|
-
again.
|
21
|
-
</s:Text>
|
22
|
-
</s:Reason>
|
23
|
-
<s:Detail>
|
24
|
-
<f:WSManFault xmlns:f='http://schemas.microsoft.com/wbem/wsman/1/wsmanfault' Code='2150858778' Machine=''>
|
25
|
-
<f:Message>
|
26
|
-
<f:ProviderFault provider='WMIv1 plugin for Windows Remote Management ' path='%systemroot%\system32\WsmWmiPl.dll'>
|
27
|
-
<f:WSManFault xmlns:f='http://schemas.microsoft.com/wbem/wsman/1/wsmanfault' Code='2150858778' Machine='' xml:lang='en-US'>
|
28
|
-
<f:Message>The specified class does not exist in the given namespace. </f:Message>
|
29
|
-
</f:WSManFault>
|
30
|
-
</f:ProviderFault>
|
31
|
-
</f:Message>
|
32
|
-
</f:WSManFault>
|
33
|
-
</s:Detail>
|
34
|
-
</s:Fault>
|
35
|
-
</s:Body>
|
36
|
-
</s:Envelope>
|
1
|
+
<s:Envelope xml:lang='en-US' xmlns:s='http://www.w3.org/2003/05/soap-envelope' xmlns:a='http://schemas.xmlsoap.org/ws/2004/08/addressing' xmlns:x='http://schemas.xmlsoap.org/ws/2004/09/transfer' xmlns:e='http://schemas.xmlsoap.org/ws/2004/08/eventing' xmlns:n='http://schemas.xmlsoap.org/ws/2004/09/enumeration' xmlns:w='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'>
|
2
|
+
<s:Header>
|
3
|
+
<a:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/fault</a:Action>
|
4
|
+
<a:MessageID>uuid:AF8907B2-F47E-4DE5-A4AA-E1EC36EA0E49</a:MessageID>
|
5
|
+
<a:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:To>
|
6
|
+
<a:RelatesTo>uuid:B90EC4BB-4484-4ADA-920B-019517747915</a:RelatesTo>
|
7
|
+
</s:Header>
|
8
|
+
<s:Body>
|
9
|
+
<s:Fault>
|
10
|
+
<s:Code>
|
11
|
+
<s:Value>s:Sender</s:Value>
|
12
|
+
<s:Subcode>
|
13
|
+
<s:Value>n:CannotProcessFilter</s:Value>
|
14
|
+
</s:Subcode>
|
15
|
+
</s:Code>
|
16
|
+
<s:Reason>
|
17
|
+
<s:Text xml:lang='en-US'>
|
18
|
+
The data source could not process the filter. The filter might be
|
19
|
+
missing or it might be invalid. Change the filter and try the request
|
20
|
+
again.
|
21
|
+
</s:Text>
|
22
|
+
</s:Reason>
|
23
|
+
<s:Detail>
|
24
|
+
<f:WSManFault xmlns:f='http://schemas.microsoft.com/wbem/wsman/1/wsmanfault' Code='2150858778' Machine=''>
|
25
|
+
<f:Message>
|
26
|
+
<f:ProviderFault provider='WMIv1 plugin for Windows Remote Management ' path='%systemroot%\system32\WsmWmiPl.dll'>
|
27
|
+
<f:WSManFault xmlns:f='http://schemas.microsoft.com/wbem/wsman/1/wsmanfault' Code='2150858778' Machine='' xml:lang='en-US'>
|
28
|
+
<f:Message>The specified class does not exist in the given namespace. </f:Message>
|
29
|
+
</f:WSManFault>
|
30
|
+
</f:ProviderFault>
|
31
|
+
</f:Message>
|
32
|
+
</f:WSManFault>
|
33
|
+
</s:Detail>
|
34
|
+
</s:Fault>
|
35
|
+
</s:Body>
|
36
|
+
</s:Envelope>
|
@@ -1,42 +1,42 @@
|
|
1
|
-
<?xml version="1.0"?>
|
2
|
-
<s:Envelope xml:lang="en-US" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:n="http://schemas.xmlsoap.org/ws/2004/09/enumeration" xmlns:p="http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd" xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns:x="http://schemas.xmlsoap.org/ws/2004/09/transfer">
|
3
|
-
<s:Header>
|
4
|
-
<a:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/fault</a:Action>
|
5
|
-
<a:MessageID>uuid:CC816664-896D-46C7-9227-AE6E1231CE49</a:MessageID>
|
6
|
-
<a:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:To>
|
7
|
-
<a:RelatesTo>uuid:0CB1C49A-5054-4C12-AF30-FC60BE995DD9</a:RelatesTo>
|
8
|
-
</s:Header>
|
9
|
-
<s:Body>
|
10
|
-
<s:Fault>
|
11
|
-
<s:Code>
|
12
|
-
<s:Value>s:Sender</s:Value>
|
13
|
-
<s:Subcode>
|
14
|
-
<s:Value>n:CannotProcessFilter</s:Value>
|
15
|
-
</s:Subcode>
|
16
|
-
</s:Code>
|
17
|
-
<s:Reason>
|
18
|
-
<s:Text xml:lang="en-US">The data source could not process the filter. The filter might be missing or it might be invalid. Change the filter and try the request again. </s:Text>
|
19
|
-
</s:Reason>
|
20
|
-
<s:Detail>
|
21
|
-
<f:WSManFault Code="2150858778" Machine="localhost" xmlns:f="http://schemas.microsoft.com/wbem/wsman/1/wsmanfault">
|
22
|
-
<f:Message>
|
23
|
-
<f:ProviderFault path="%systemroot%\system32\WsmWmiPl.dll" provider="WMI Provider">
|
24
|
-
<f:WSManFault Code="2150858778" Machine="vagrant-2008R2" xmlns:f="http://schemas.microsoft.com/wbem/wsman/1/wsmanfault">
|
25
|
-
<f:Message>The specified class does not exist in the given namespace. </f:Message>
|
26
|
-
</f:WSManFault>
|
27
|
-
<f:ExtendedError>
|
28
|
-
<p:__ExtendedStatus xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:p="http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/__ExtendedStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="p:__ExtendedStatus_Type">
|
29
|
-
<p:Description xsi:nil="true"/>
|
30
|
-
<p:Operation>ExecQuery</p:Operation>
|
31
|
-
<p:ParameterInfo>Select * from Win32_Processa where name="sshd.exe"</p:ParameterInfo>
|
32
|
-
<p:ProviderName>WinMgmt</p:ProviderName>
|
33
|
-
<p:StatusCode xsi:nil="true"/>
|
34
|
-
</p:__ExtendedStatus>
|
35
|
-
</f:ExtendedError>
|
36
|
-
</f:ProviderFault>
|
37
|
-
</f:Message>
|
38
|
-
</f:WSManFault>
|
39
|
-
</s:Detail>
|
40
|
-
</s:Fault>
|
41
|
-
</s:Body>
|
42
|
-
</s:Envelope>
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<s:Envelope xml:lang="en-US" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:n="http://schemas.xmlsoap.org/ws/2004/09/enumeration" xmlns:p="http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd" xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns:x="http://schemas.xmlsoap.org/ws/2004/09/transfer">
|
3
|
+
<s:Header>
|
4
|
+
<a:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/fault</a:Action>
|
5
|
+
<a:MessageID>uuid:CC816664-896D-46C7-9227-AE6E1231CE49</a:MessageID>
|
6
|
+
<a:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:To>
|
7
|
+
<a:RelatesTo>uuid:0CB1C49A-5054-4C12-AF30-FC60BE995DD9</a:RelatesTo>
|
8
|
+
</s:Header>
|
9
|
+
<s:Body>
|
10
|
+
<s:Fault>
|
11
|
+
<s:Code>
|
12
|
+
<s:Value>s:Sender</s:Value>
|
13
|
+
<s:Subcode>
|
14
|
+
<s:Value>n:CannotProcessFilter</s:Value>
|
15
|
+
</s:Subcode>
|
16
|
+
</s:Code>
|
17
|
+
<s:Reason>
|
18
|
+
<s:Text xml:lang="en-US">The data source could not process the filter. The filter might be missing or it might be invalid. Change the filter and try the request again. </s:Text>
|
19
|
+
</s:Reason>
|
20
|
+
<s:Detail>
|
21
|
+
<f:WSManFault Code="2150858778" Machine="localhost" xmlns:f="http://schemas.microsoft.com/wbem/wsman/1/wsmanfault">
|
22
|
+
<f:Message>
|
23
|
+
<f:ProviderFault path="%systemroot%\system32\WsmWmiPl.dll" provider="WMI Provider">
|
24
|
+
<f:WSManFault Code="2150858778" Machine="vagrant-2008R2" xmlns:f="http://schemas.microsoft.com/wbem/wsman/1/wsmanfault">
|
25
|
+
<f:Message>The specified class does not exist in the given namespace. </f:Message>
|
26
|
+
</f:WSManFault>
|
27
|
+
<f:ExtendedError>
|
28
|
+
<p:__ExtendedStatus xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:p="http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/__ExtendedStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="p:__ExtendedStatus_Type">
|
29
|
+
<p:Description xsi:nil="true"/>
|
30
|
+
<p:Operation>ExecQuery</p:Operation>
|
31
|
+
<p:ParameterInfo>Select * from Win32_Processa where name="sshd.exe"</p:ParameterInfo>
|
32
|
+
<p:ProviderName>WinMgmt</p:ProviderName>
|
33
|
+
<p:StatusCode xsi:nil="true"/>
|
34
|
+
</p:__ExtendedStatus>
|
35
|
+
</f:ExtendedError>
|
36
|
+
</f:ProviderFault>
|
37
|
+
</f:Message>
|
38
|
+
</f:WSManFault>
|
39
|
+
</s:Detail>
|
40
|
+
</s:Fault>
|
41
|
+
</s:Body>
|
42
|
+
</s:Envelope>
|
@@ -1,41 +1,41 @@
|
|
1
|
-
<s:Envelope xmlns:a='http://schemas.xmlsoap.org/ws/2004/08/addressing' xmlns:e='http://schemas.xmlsoap.org/ws/2004/08/eventing' xml:lang='en-US' xmlns:n='http://schemas.xmlsoap.org/ws/2004/09/enumeration' xmlns:p='http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd' xmlns:s='http://www.w3.org/2003/05/soap-envelope' xmlns:w='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd' xmlns:x='http://schemas.xmlsoap.org/ws/2004/09/transfer'>
|
2
|
-
<s:Header>
|
3
|
-
<a:Action>http://schemas.dmtf.org/wbem/wsman/1/wsman/fault</a:Action>
|
4
|
-
<a:MessageID>uuid:B8829021-48C3-4F27-B94B-491DAC4F29B1</a:MessageID>
|
5
|
-
<a:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:To>
|
6
|
-
</s:Header>
|
7
|
-
<s:Body>
|
8
|
-
<s:Fault>
|
9
|
-
<s:Code>
|
10
|
-
<s:Value>s:Sender</s:Value>
|
11
|
-
<s:Subcode>
|
12
|
-
<s:Value>w:QuotaLimit</s:Value>
|
13
|
-
</s:Subcode>
|
14
|
-
</s:Code>
|
15
|
-
<s:Reason>
|
16
|
-
<s:Text xml:lang='en-US'>The WS-Management service cannot process the request. The maximum number of concurrent shells for this user has been exceeded. Close existing shells or raise the quota for this user. </s:Text>
|
17
|
-
</s:Reason>
|
18
|
-
<s:Detail>
|
19
|
-
<p:MSFT_WmiError b:IsCIM_Error='true' xmlns:b='http://schemas.dmtf.org/wbem/wsman/1/cimbinding.xsd' xmlns:cim='http://schemas.dmtf.org/wbem/wscim/1/common' xmlns:p='http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/MSFT_WmiError' xsi:type='p:MSFT_WmiError_Type' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
|
20
|
-
<p:CIMStatusCode xsi:type='cim:cimUnsignedInt'>27</p:CIMStatusCode>
|
21
|
-
<p:CIMStatusCodeDescription xsi:nil='true' xsi:type='cim:cimString'/>
|
22
|
-
<p:ErrorSource xsi:nil='true' xsi:type='cim:cimString'/>
|
23
|
-
<p:ErrorSourceFormat xsi:type='cim:cimUnsignedShort'>0</p:ErrorSourceFormat>
|
24
|
-
<p:ErrorType xsi:type='cim:cimUnsignedShort'>0</p:ErrorType>
|
25
|
-
<p:Message xsi:type='cim:cimString'>The WS-Management service cannot process the request. This user is allowed a maximum number of 30 concurrent shells, which has been exceeded. Close existing shells or raise the quota for this user. </p:Message>
|
26
|
-
<p:MessageID xsi:type='cim:cimString'>HRESULT 0x803381a5</p:MessageID>
|
27
|
-
<p:OtherErrorSourceFormat xsi:nil='true' xsi:type='cim:cimString'/>
|
28
|
-
<p:OtherErrorType xsi:nil='true' xsi:type='cim:cimString'/>
|
29
|
-
<p:OwningEntity xsi:nil='true' xsi:type='cim:cimString'/>
|
30
|
-
<p:PerceivedSeverity xsi:type='cim:cimUnsignedShort'>0</p:PerceivedSeverity>
|
31
|
-
<p:ProbableCause xsi:type='cim:cimUnsignedShort'>0</p:ProbableCause>
|
32
|
-
<p:ProbableCauseDescription xsi:nil='true' xsi:type='cim:cimString'/>
|
33
|
-
<p:error_Category xsi:type='cim:cimUnsignedInt'>30</p:error_Category>
|
34
|
-
<p:error_Code xsi:type='cim:cimUnsignedInt'>2150859173</p:error_Code>
|
35
|
-
<p:error_Type xsi:type='cim:cimString'>HRESULT</p:error_Type>
|
36
|
-
<p:error_WindowsErrorMessage xsi:type='cim:cimString'>The WS-Management service cannot process the request. This user is allowed a maximum number of 30 concurrent shells, which has been exceeded. Close existing shells or raise the quota for this user. </p:error_WindowsErrorMessage>
|
37
|
-
</p:MSFT_WmiError>
|
38
|
-
</s:Detail>
|
39
|
-
</s:Fault>
|
40
|
-
</s:Body>
|
41
|
-
</s:Envelope>
|
1
|
+
<s:Envelope xmlns:a='http://schemas.xmlsoap.org/ws/2004/08/addressing' xmlns:e='http://schemas.xmlsoap.org/ws/2004/08/eventing' xml:lang='en-US' xmlns:n='http://schemas.xmlsoap.org/ws/2004/09/enumeration' xmlns:p='http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd' xmlns:s='http://www.w3.org/2003/05/soap-envelope' xmlns:w='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd' xmlns:x='http://schemas.xmlsoap.org/ws/2004/09/transfer'>
|
2
|
+
<s:Header>
|
3
|
+
<a:Action>http://schemas.dmtf.org/wbem/wsman/1/wsman/fault</a:Action>
|
4
|
+
<a:MessageID>uuid:B8829021-48C3-4F27-B94B-491DAC4F29B1</a:MessageID>
|
5
|
+
<a:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:To>
|
6
|
+
</s:Header>
|
7
|
+
<s:Body>
|
8
|
+
<s:Fault>
|
9
|
+
<s:Code>
|
10
|
+
<s:Value>s:Sender</s:Value>
|
11
|
+
<s:Subcode>
|
12
|
+
<s:Value>w:QuotaLimit</s:Value>
|
13
|
+
</s:Subcode>
|
14
|
+
</s:Code>
|
15
|
+
<s:Reason>
|
16
|
+
<s:Text xml:lang='en-US'>The WS-Management service cannot process the request. The maximum number of concurrent shells for this user has been exceeded. Close existing shells or raise the quota for this user. </s:Text>
|
17
|
+
</s:Reason>
|
18
|
+
<s:Detail>
|
19
|
+
<p:MSFT_WmiError b:IsCIM_Error='true' xmlns:b='http://schemas.dmtf.org/wbem/wsman/1/cimbinding.xsd' xmlns:cim='http://schemas.dmtf.org/wbem/wscim/1/common' xmlns:p='http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/MSFT_WmiError' xsi:type='p:MSFT_WmiError_Type' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
|
20
|
+
<p:CIMStatusCode xsi:type='cim:cimUnsignedInt'>27</p:CIMStatusCode>
|
21
|
+
<p:CIMStatusCodeDescription xsi:nil='true' xsi:type='cim:cimString'/>
|
22
|
+
<p:ErrorSource xsi:nil='true' xsi:type='cim:cimString'/>
|
23
|
+
<p:ErrorSourceFormat xsi:type='cim:cimUnsignedShort'>0</p:ErrorSourceFormat>
|
24
|
+
<p:ErrorType xsi:type='cim:cimUnsignedShort'>0</p:ErrorType>
|
25
|
+
<p:Message xsi:type='cim:cimString'>The WS-Management service cannot process the request. This user is allowed a maximum number of 30 concurrent shells, which has been exceeded. Close existing shells or raise the quota for this user. </p:Message>
|
26
|
+
<p:MessageID xsi:type='cim:cimString'>HRESULT 0x803381a5</p:MessageID>
|
27
|
+
<p:OtherErrorSourceFormat xsi:nil='true' xsi:type='cim:cimString'/>
|
28
|
+
<p:OtherErrorType xsi:nil='true' xsi:type='cim:cimString'/>
|
29
|
+
<p:OwningEntity xsi:nil='true' xsi:type='cim:cimString'/>
|
30
|
+
<p:PerceivedSeverity xsi:type='cim:cimUnsignedShort'>0</p:PerceivedSeverity>
|
31
|
+
<p:ProbableCause xsi:type='cim:cimUnsignedShort'>0</p:ProbableCause>
|
32
|
+
<p:ProbableCauseDescription xsi:nil='true' xsi:type='cim:cimString'/>
|
33
|
+
<p:error_Category xsi:type='cim:cimUnsignedInt'>30</p:error_Category>
|
34
|
+
<p:error_Code xsi:type='cim:cimUnsignedInt'>2150859173</p:error_Code>
|
35
|
+
<p:error_Type xsi:type='cim:cimString'>HRESULT</p:error_Type>
|
36
|
+
<p:error_WindowsErrorMessage xsi:type='cim:cimString'>The WS-Management service cannot process the request. This user is allowed a maximum number of 30 concurrent shells, which has been exceeded. Close existing shells or raise the quota for this user. </p:error_WindowsErrorMessage>
|
37
|
+
</p:MSFT_WmiError>
|
38
|
+
</s:Detail>
|
39
|
+
</s:Fault>
|
40
|
+
</s:Body>
|
41
|
+
</s:Envelope>
|
data/spec/transport_spec.rb
CHANGED
@@ -1,124 +1,139 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require 'rubyntlm'
|
3
|
-
require 'winrm/http/transport'
|
4
|
-
|
5
|
-
describe WinRM::HTTP::HttpNegotiate, unit: true do
|
6
|
-
describe '#init' do
|
7
|
-
let(:endpoint) { 'some_endpoint' }
|
8
|
-
let(:domain) { 'some_domain' }
|
9
|
-
let(:user) { 'some_user' }
|
10
|
-
let(:password) { 'some_password' }
|
11
|
-
let(:options) { {} }
|
12
|
-
|
13
|
-
context 'user is not domain prefixed' do
|
14
|
-
it 'does not pass a domain to the NTLM client' do
|
15
|
-
expect(Net::NTLM::Client).to receive(:new).with(user, password, options)
|
16
|
-
WinRM::HTTP::HttpNegotiate.new(endpoint, user, password, options)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context 'user is domain prefixed' do
|
21
|
-
it 'passes prefixed domain to the NTLM client' do
|
22
|
-
expect(Net::NTLM::Client).to receive(:new) do |passed_user, passed_password, passed_options|
|
23
|
-
expect(passed_user).to eq user
|
24
|
-
expect(passed_password).to eq password
|
25
|
-
expect(passed_options[:domain]).to eq domain
|
26
|
-
end
|
27
|
-
WinRM::HTTP::HttpNegotiate.new(endpoint, "#{domain}\\#{user}", password, options)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context 'option is passed with a domain' do
|
32
|
-
let(:options) { { domain: domain } }
|
33
|
-
|
34
|
-
it 'passes domain option to the NTLM client' do
|
35
|
-
expect(Net::NTLM::Client).to receive(:new) do |passed_user, passed_password, passed_options|
|
36
|
-
expect(passed_user).to eq user
|
37
|
-
expect(passed_password).to eq password
|
38
|
-
expect(passed_options[:domain]).to eq domain
|
39
|
-
end
|
40
|
-
WinRM::HTTP::HttpNegotiate.new(endpoint, user, password, options)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe 'WinRM connection', integration: true do
|
47
|
-
let(:winrm_connection) do
|
48
|
-
endpoint = config[:endpoint].dup
|
49
|
-
if auth_type == :ssl
|
50
|
-
endpoint.sub!('5985', '5986')
|
51
|
-
endpoint.sub!('http', 'https')
|
52
|
-
end
|
53
|
-
winrm = WinRM::WinRMWebService.new(
|
54
|
-
endpoint, auth_type, options)
|
55
|
-
winrm.logger.level = :error
|
56
|
-
winrm
|
57
|
-
end
|
58
|
-
let(:options) do
|
59
|
-
opts = {}
|
60
|
-
opts[:user] = config[:options][:user]
|
61
|
-
opts[:pass] = config[:options][:pass]
|
62
|
-
opts[:basic_auth_only] = basic_auth_only
|
63
|
-
opts[:no_ssl_peer_verification] = no_ssl_peer_verification
|
64
|
-
opts[:ssl_peer_fingerprint] = ssl_peer_fingerprint
|
65
|
-
opts
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
let(:
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
it '
|
82
|
-
expect(subject).to
|
83
|
-
end
|
84
|
-
|
85
|
-
it '
|
86
|
-
expect(subject).to
|
87
|
-
end
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
let(:
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
end
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'rubyntlm'
|
3
|
+
require 'winrm/http/transport'
|
4
|
+
|
5
|
+
describe WinRM::HTTP::HttpNegotiate, unit: true do
|
6
|
+
describe '#init' do
|
7
|
+
let(:endpoint) { 'some_endpoint' }
|
8
|
+
let(:domain) { 'some_domain' }
|
9
|
+
let(:user) { 'some_user' }
|
10
|
+
let(:password) { 'some_password' }
|
11
|
+
let(:options) { {} }
|
12
|
+
|
13
|
+
context 'user is not domain prefixed' do
|
14
|
+
it 'does not pass a domain to the NTLM client' do
|
15
|
+
expect(Net::NTLM::Client).to receive(:new).with(user, password, options)
|
16
|
+
WinRM::HTTP::HttpNegotiate.new(endpoint, user, password, options)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'user is domain prefixed' do
|
21
|
+
it 'passes prefixed domain to the NTLM client' do
|
22
|
+
expect(Net::NTLM::Client).to receive(:new) do |passed_user, passed_password, passed_options|
|
23
|
+
expect(passed_user).to eq user
|
24
|
+
expect(passed_password).to eq password
|
25
|
+
expect(passed_options[:domain]).to eq domain
|
26
|
+
end
|
27
|
+
WinRM::HTTP::HttpNegotiate.new(endpoint, "#{domain}\\#{user}", password, options)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'option is passed with a domain' do
|
32
|
+
let(:options) { { domain: domain } }
|
33
|
+
|
34
|
+
it 'passes domain option to the NTLM client' do
|
35
|
+
expect(Net::NTLM::Client).to receive(:new) do |passed_user, passed_password, passed_options|
|
36
|
+
expect(passed_user).to eq user
|
37
|
+
expect(passed_password).to eq password
|
38
|
+
expect(passed_options[:domain]).to eq domain
|
39
|
+
end
|
40
|
+
WinRM::HTTP::HttpNegotiate.new(endpoint, user, password, options)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe 'WinRM connection', integration: true do
|
47
|
+
let(:winrm_connection) do
|
48
|
+
endpoint = config[:endpoint].dup
|
49
|
+
if auth_type == :ssl
|
50
|
+
endpoint.sub!('5985', '5986')
|
51
|
+
endpoint.sub!('http', 'https')
|
52
|
+
end
|
53
|
+
winrm = WinRM::WinRMWebService.new(
|
54
|
+
endpoint, auth_type, options)
|
55
|
+
winrm.logger.level = :error
|
56
|
+
winrm
|
57
|
+
end
|
58
|
+
let(:options) do
|
59
|
+
opts = {}
|
60
|
+
opts[:user] = config[:options][:user]
|
61
|
+
opts[:pass] = config[:options][:pass]
|
62
|
+
opts[:basic_auth_only] = basic_auth_only
|
63
|
+
opts[:no_ssl_peer_verification] = no_ssl_peer_verification
|
64
|
+
opts[:ssl_peer_fingerprint] = ssl_peer_fingerprint
|
65
|
+
opts[:client_cert] = user_cert
|
66
|
+
opts[:client_key] = user_key
|
67
|
+
opts
|
68
|
+
end
|
69
|
+
let(:basic_auth_only) { false }
|
70
|
+
let(:no_ssl_peer_verification) { false }
|
71
|
+
let(:ssl_peer_fingerprint) { nil }
|
72
|
+
let(:user_cert) { nil }
|
73
|
+
let(:user_key) { nil }
|
74
|
+
|
75
|
+
subject(:output) do
|
76
|
+
executor = winrm_connection.create_executor
|
77
|
+
executor.run_cmd('ipconfig')
|
78
|
+
end
|
79
|
+
|
80
|
+
shared_examples 'a valid_connection' do
|
81
|
+
it 'has a 0 exit code' do
|
82
|
+
expect(subject).to have_exit_code 0
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'includes command output' do
|
86
|
+
expect(subject).to have_stdout_match(/Windows IP Configuration/)
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'has no errors' do
|
90
|
+
expect(subject).to have_no_stderr
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
context 'HttpPlaintext' do
|
95
|
+
let(:basic_auth_only) { true }
|
96
|
+
let(:auth_type) { :plaintext }
|
97
|
+
|
98
|
+
it_behaves_like 'a valid_connection'
|
99
|
+
end
|
100
|
+
|
101
|
+
context 'HttpNegotiate' do
|
102
|
+
let(:auth_type) { :negotiate }
|
103
|
+
|
104
|
+
it_behaves_like 'a valid_connection'
|
105
|
+
end
|
106
|
+
|
107
|
+
context 'BasicAuthSSL', skip: ENV['winrm_cert'].nil? do
|
108
|
+
let(:basic_auth_only) { true }
|
109
|
+
let(:auth_type) { :ssl }
|
110
|
+
let(:no_ssl_peer_verification) { true }
|
111
|
+
|
112
|
+
it_behaves_like 'a valid_connection'
|
113
|
+
end
|
114
|
+
|
115
|
+
context 'ClientCertAuthSSL', skip: ENV['user_cert'].nil? do
|
116
|
+
let(:auth_type) { :ssl }
|
117
|
+
let(:no_ssl_peer_verification) { true }
|
118
|
+
let(:user_cert) { ENV['user_cert'] }
|
119
|
+
let(:user_key) { ENV['user_key'] }
|
120
|
+
|
121
|
+
before { options[:pass] = nil }
|
122
|
+
|
123
|
+
it_behaves_like 'a valid_connection'
|
124
|
+
end
|
125
|
+
|
126
|
+
context 'Negotiate over SSL', skip: ENV['winrm_cert'].nil? do
|
127
|
+
let(:auth_type) { :ssl }
|
128
|
+
let(:no_ssl_peer_verification) { true }
|
129
|
+
|
130
|
+
it_behaves_like 'a valid_connection'
|
131
|
+
end
|
132
|
+
|
133
|
+
context 'SSL fingerprint', skip: ENV['winrm_cert'].nil? do
|
134
|
+
let(:auth_type) { :ssl }
|
135
|
+
let(:ssl_peer_fingerprint) { ENV['winrm_cert'] }
|
136
|
+
|
137
|
+
it_behaves_like 'a valid_connection'
|
138
|
+
end
|
139
|
+
end
|