winrm 2.0.1 → 2.0.2
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/README.md +2 -1
- data/changelog.md +5 -0
- data/lib/winrm/connection_opts.rb +6 -2
- data/lib/winrm/psrp/message_data.rb +1 -0
- data/lib/winrm/psrp/message_data/error_record.rb +1 -1
- data/lib/winrm/psrp/message_data/pipeline_state.rb +40 -0
- data/lib/winrm/psrp/powershell_output_decoder.rb +27 -8
- data/lib/winrm/psrp/receive_response_reader.rb +4 -0
- data/lib/winrm/version.rb +1 -1
- data/tests/integration/powershell_spec.rb +6 -0
- data/tests/spec/configuration_spec.rb +95 -4
- data/tests/spec/psrp/message_data/pipeline_state_spec.rb +40 -0
- data/tests/spec/psrp/powershell_output_decoder_spec.rb +17 -1
- data/tests/spec/psrp/recieve_response_reader_spec.rb +18 -0
- data/tests/spec/stubs/clixml/pipeline_state.xml.erb +88 -0
- data/winrm.gemspec +1 -1
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8513f8bd7975beaf571799996f1a2a799d5f9703
|
4
|
+
data.tar.gz: 18d6d880eb43e8038048e587ce4530472a09798f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d71061fcb4154162b517fead0f4392d0e012494e5fe506aa7c712beab933a45ac8f90e154e028f2f50166bcec9cf19245422f30f66c8081adc923455595db4d6
|
7
|
+
data.tar.gz: 15ea773970783c2fdcf4cd1220d057c4cbee4a66d998e00ff444b2c9002cceb38aeff61b3f442b2a2ad753fed169559547592a382a1f89e0096b37ec2829d0d0
|
data/README.md
CHANGED
@@ -27,10 +27,11 @@ opts = {
|
|
27
27
|
}
|
28
28
|
conn = WinRM::Connection.new(opts)
|
29
29
|
conn.shell(:powershell) do |shell|
|
30
|
-
shell.run('$PSVersionTable') do |stdout, stderr|
|
30
|
+
output = shell.run('$PSVersionTable') do |stdout, stderr|
|
31
31
|
STDOUT.print stdout
|
32
32
|
STDERR.print stderr
|
33
33
|
end
|
34
|
+
puts "The script exited with exit code #{output.exitcode}"
|
34
35
|
end
|
35
36
|
```
|
36
37
|
|
data/changelog.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# WinRM Gem Changelog
|
2
2
|
|
3
|
+
# 2.0.2
|
4
|
+
- Constrain to rubyntlm `>= 0.6.1` to avoid mutating frozen strings
|
5
|
+
- When using certificate authentication, do not validate presense of user and password
|
6
|
+
- Handle failed `PIPELINE_STATE` messages so that `throw` errors are not swallowed
|
7
|
+
|
3
8
|
# 2.0.1
|
4
9
|
- Fixed Powershell shell leakage when not explicitly closed
|
5
10
|
- Fixed cmd commands with responses that extend beyond one stream
|
@@ -66,8 +66,12 @@ module WinRM
|
|
66
66
|
|
67
67
|
def validate_required_fields
|
68
68
|
raise 'endpoint is a required option' unless self[:endpoint]
|
69
|
-
|
70
|
-
|
69
|
+
if self[:client_cert]
|
70
|
+
raise 'path to client key is required' unless self[:client_key]
|
71
|
+
else
|
72
|
+
raise 'user is a required option' unless self[:user]
|
73
|
+
raise 'password is a required option' unless self[:password]
|
74
|
+
end
|
71
75
|
end
|
72
76
|
|
73
77
|
def validate_data_types
|
@@ -18,6 +18,7 @@ require_relative 'message_data/base'
|
|
18
18
|
require_relative 'message_data/error_record'
|
19
19
|
require_relative 'message_data/pipeline_output'
|
20
20
|
require_relative 'message_data/pipeline_host_call'
|
21
|
+
require_relative 'message_data/pipeline_state'
|
21
22
|
require_relative 'message_data/runspacepool_host_call'
|
22
23
|
require_relative 'message_data/runspacepool_state'
|
23
24
|
require_relative 'message_data/session_capability'
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright 2016 Matt Wrock <matt@mattwrock.com>
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
module WinRM
|
18
|
+
module PSRP
|
19
|
+
module MessageData
|
20
|
+
# pipeline state message type
|
21
|
+
class PipelineState < Base
|
22
|
+
NOT_STARTED = 0
|
23
|
+
RUNNING = 1
|
24
|
+
STOPPING = 2
|
25
|
+
STOPPED = 3
|
26
|
+
COMPLETED = 4
|
27
|
+
FAILED = 5
|
28
|
+
DISCONNECTED = 6
|
29
|
+
|
30
|
+
def pipeline_state
|
31
|
+
clixml[:i32].to_i
|
32
|
+
end
|
33
|
+
|
34
|
+
def exception_as_error_record
|
35
|
+
@exception_as_error_record ||= ErrorRecord.new(raw) if pipeline_state == FAILED
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -16,11 +16,13 @@
|
|
16
16
|
|
17
17
|
require 'base64'
|
18
18
|
require_relative 'message'
|
19
|
+
require_relative 'message_data/pipeline_state'
|
19
20
|
|
20
21
|
module WinRM
|
21
22
|
module PSRP
|
22
23
|
# Handles decoding a raw powershell output response
|
23
24
|
class PowershellOutputDecoder
|
25
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
24
26
|
# Decode the raw SOAP output into decoded PSRP message,
|
25
27
|
# Removes BOM and replaces encoded line endings
|
26
28
|
# @param raw_output [String] The raw encoded output
|
@@ -35,8 +37,13 @@ module WinRM
|
|
35
37
|
decode_host_call(message)
|
36
38
|
when WinRM::PSRP::Message::MESSAGE_TYPES[:error_record]
|
37
39
|
decode_error_record(message)
|
40
|
+
when WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_state]
|
41
|
+
if message.parsed_data.pipeline_state == WinRM::PSRP::MessageData::PipelineState::FAILED
|
42
|
+
decode_error_record(message)
|
43
|
+
end
|
38
44
|
end
|
39
45
|
end
|
46
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
40
47
|
|
41
48
|
protected
|
42
49
|
|
@@ -66,15 +73,19 @@ module WinRM
|
|
66
73
|
def decode_error_record(message)
|
67
74
|
parsed = message.parsed_data
|
68
75
|
text = begin
|
69
|
-
|
70
|
-
|
71
|
-
render_write_error_exception(parsed)
|
72
|
-
when 'NativeCommandError'
|
73
|
-
render_native_command_error(parsed)
|
74
|
-
when 'NativeCommandErrorMessage'
|
75
|
-
parsed.exception[:message]
|
76
|
+
if message.type == WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_state]
|
77
|
+
render_exception_as_error_record(parsed.exception_as_error_record)
|
76
78
|
else
|
77
|
-
|
79
|
+
case parsed.fully_qualified_error_id
|
80
|
+
when 'Microsoft.PowerShell.Commands.WriteErrorException'
|
81
|
+
render_write_error_exception(parsed)
|
82
|
+
when 'NativeCommandError'
|
83
|
+
render_native_command_error(parsed)
|
84
|
+
when 'NativeCommandErrorMessage'
|
85
|
+
parsed.exception[:message]
|
86
|
+
else
|
87
|
+
render_exception(parsed)
|
88
|
+
end
|
78
89
|
end
|
79
90
|
end
|
80
91
|
|
@@ -106,6 +117,14 @@ EOH
|
|
106
117
|
EOH
|
107
118
|
end
|
108
119
|
|
120
|
+
def render_exception_as_error_record(parsed)
|
121
|
+
<<EOH
|
122
|
+
#{parsed.exception[:message]}
|
123
|
+
+ CategoryInfo : #{parsed.error_category_message}
|
124
|
+
+ FullyQualifiedErrorId : #{parsed.fully_qualified_error_id}
|
125
|
+
EOH
|
126
|
+
end
|
127
|
+
|
109
128
|
private
|
110
129
|
|
111
130
|
def hex_decode(text)
|
@@ -78,6 +78,10 @@ module WinRM
|
|
78
78
|
type = :stderr
|
79
79
|
when WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_host_call]
|
80
80
|
type = :stderr if message.data.include?('WriteError')
|
81
|
+
when WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_state]
|
82
|
+
if message.parsed_data.pipeline_state == WinRM::PSRP::MessageData::PipelineState::FAILED
|
83
|
+
type = :stderr
|
84
|
+
end
|
81
85
|
end
|
82
86
|
type
|
83
87
|
end
|
data/lib/winrm/version.rb
CHANGED
@@ -13,6 +13,12 @@ describe 'winrm client powershell' do
|
|
13
13
|
it { should have_no_stderr }
|
14
14
|
end
|
15
15
|
|
16
|
+
describe 'throw' do
|
17
|
+
subject(:output) { @powershell.run("throw 'an error occured'") }
|
18
|
+
it { should have_exit_code 0 }
|
19
|
+
it { should have_stderr_match(/an error occured/) }
|
20
|
+
end
|
21
|
+
|
16
22
|
describe 'exit' do
|
17
23
|
subject(:output) { @powershell.run('exit 5') }
|
18
24
|
it { should have_exit_code 5 }
|
@@ -2,13 +2,82 @@
|
|
2
2
|
require 'winrm/connection_opts'
|
3
3
|
|
4
4
|
describe WinRM::ConnectionOpts do
|
5
|
+
shared_examples 'invalid options' do
|
6
|
+
it 'throws a validation error' do
|
7
|
+
expect { WinRM::ConnectionOpts.create_with_defaults(overrides) }.to raise_error
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
5
11
|
context 'when there are no overrides' do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
12
|
+
it_behaves_like 'invalid options'
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when there are only username and password' do
|
16
|
+
let(:overrides) do
|
17
|
+
{
|
18
|
+
user: 'Administrator',
|
19
|
+
password: 'password'
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
it_behaves_like 'invalid options'
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when there are only username and endpoint' do
|
27
|
+
let(:overrides) do
|
28
|
+
{
|
29
|
+
user: 'Administrator',
|
30
|
+
endpoint: 'http://localhost:5985/wsman'
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
it_behaves_like 'invalid options'
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when there are only password and endpoint' do
|
38
|
+
let(:overrides) do
|
39
|
+
{
|
40
|
+
password: 'password',
|
41
|
+
endpoint: 'http://localhost:5985/wsman'
|
42
|
+
}
|
10
43
|
end
|
44
|
+
|
45
|
+
it_behaves_like 'invalid options'
|
11
46
|
end
|
47
|
+
|
48
|
+
context 'when there are only certificate and key' do
|
49
|
+
let(:overrides) do
|
50
|
+
{
|
51
|
+
client_cert: 'path/to/cert',
|
52
|
+
client_key: 'path/to/key'
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
it_behaves_like 'invalid options'
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'when there are only certificate and endpoint' do
|
60
|
+
let(:overrides) do
|
61
|
+
{
|
62
|
+
client_cert: 'path/to/cert',
|
63
|
+
endpoint: 'http://localhost:5985/wsman'
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
67
|
+
it_behaves_like 'invalid options'
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'when there are only key and endpoint' do
|
71
|
+
let(:overrides) do
|
72
|
+
{
|
73
|
+
client_key: 'path/to/key',
|
74
|
+
endpoint: 'http://localhost:5985/wsman'
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
it_behaves_like 'invalid options'
|
79
|
+
end
|
80
|
+
|
12
81
|
context 'when username, password, and endpoint are given' do
|
13
82
|
let(:overrides) do
|
14
83
|
{
|
@@ -26,6 +95,25 @@ describe WinRM::ConnectionOpts do
|
|
26
95
|
end
|
27
96
|
end
|
28
97
|
end
|
98
|
+
|
99
|
+
context 'when certificate, key and endpoint are given' do
|
100
|
+
let(:overrides) do
|
101
|
+
{
|
102
|
+
client_cert: 'path/to/cert',
|
103
|
+
client_key: 'path/to/key',
|
104
|
+
endpoint: 'http://localhost:5985/wsman'
|
105
|
+
}
|
106
|
+
end
|
107
|
+
describe '#create_with_defaults' do
|
108
|
+
it 'creates a ConnectionOpts object' do
|
109
|
+
config = WinRM::ConnectionOpts.create_with_defaults(overrides)
|
110
|
+
expect(config[:client_cert]).to eq(overrides[:client_cert])
|
111
|
+
expect(config[:client_key]).to eq(overrides[:client_key])
|
112
|
+
expect(config[:endpoint]).to eq(overrides[:endpoint])
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
29
117
|
context 'when overrides are provided' do
|
30
118
|
let(:overrides) do
|
31
119
|
{
|
@@ -42,6 +130,7 @@ describe WinRM::ConnectionOpts do
|
|
42
130
|
end
|
43
131
|
end
|
44
132
|
end
|
133
|
+
|
45
134
|
context 'when receive_timeout is specified' do
|
46
135
|
let(:overrides) do
|
47
136
|
{
|
@@ -58,6 +147,7 @@ describe WinRM::ConnectionOpts do
|
|
58
147
|
end
|
59
148
|
end
|
60
149
|
end
|
150
|
+
|
61
151
|
context 'when operation_timeout is specified' do
|
62
152
|
let(:overrides) do
|
63
153
|
{
|
@@ -75,6 +165,7 @@ describe WinRM::ConnectionOpts do
|
|
75
165
|
end
|
76
166
|
end
|
77
167
|
end
|
168
|
+
|
78
169
|
context 'when invalid data types are given' do
|
79
170
|
let(:overrides) do
|
80
171
|
{
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'winrm/psrp/message_data/base'
|
4
|
+
require 'winrm/psrp/message_data/pipeline_state'
|
5
|
+
|
6
|
+
describe WinRM::PSRP::MessageData::PipelineState do
|
7
|
+
let(:test_data_xml_template) do
|
8
|
+
ERB.new(stubbed_clixml('pipeline_state.xml.erb'))
|
9
|
+
end
|
10
|
+
let(:pipeline_state) { WinRM::PSRP::MessageData::PipelineState::FAILED }
|
11
|
+
let(:error_message) { 'an error occured' }
|
12
|
+
let(:category_message) { 'category message' }
|
13
|
+
let(:error_id) { 'an error occured' }
|
14
|
+
let(:raw_data) { test_data_xml_template.result(binding) }
|
15
|
+
subject { described_class.new(raw_data) }
|
16
|
+
|
17
|
+
it 'returns the state' do
|
18
|
+
expect(subject.pipeline_state).to eq(pipeline_state)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'returns the exception' do
|
22
|
+
expect(subject.exception_as_error_record.exception[:message]).to eq(error_message)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'returns the FullyQualifiedErrorId' do
|
26
|
+
expect(subject.exception_as_error_record.fully_qualified_error_id).to eq(error_id)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'returns the error category message' do
|
30
|
+
expect(subject.exception_as_error_record.error_category_message).to eq(category_message)
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'state is not failed' do
|
34
|
+
let(:pipeline_state) { WinRM::PSRP::MessageData::PipelineState::COMPLETED }
|
35
|
+
|
36
|
+
it 'has a nil exception' do
|
37
|
+
expect(subject.exception_as_error_record).to be(nil)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -17,7 +17,7 @@ describe WinRM::PSRP::PowershellOutputDecoder do
|
|
17
17
|
subject { described_class.new.decode(message) }
|
18
18
|
|
19
19
|
context 'undecodable message type' do
|
20
|
-
let(:message_type) { WinRM::PSRP::Message::MESSAGE_TYPES[:
|
20
|
+
let(:message_type) { WinRM::PSRP::Message::MESSAGE_TYPES[:public_key] }
|
21
21
|
|
22
22
|
it 'ignores message' do
|
23
23
|
expect(subject).to be nil
|
@@ -81,4 +81,20 @@ describe WinRM::PSRP::PowershellOutputDecoder do
|
|
81
81
|
expect(subject).to match(/#{error_message}/)
|
82
82
|
end
|
83
83
|
end
|
84
|
+
|
85
|
+
context 'receiving error record in pipeline state' do
|
86
|
+
let(:message_type) { WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_state] }
|
87
|
+
let(:test_data_error_xml_template) do
|
88
|
+
ERB.new(stubbed_clixml('pipeline_state.xml.erb'))
|
89
|
+
end
|
90
|
+
let(:pipeline_state) { WinRM::PSRP::MessageData::PipelineState::FAILED }
|
91
|
+
let(:error_message) { 'an error' }
|
92
|
+
let(:category_message) { 'category message' }
|
93
|
+
let(:error_id) { 'an error' }
|
94
|
+
let(:data) { test_data_error_xml_template.result(binding) }
|
95
|
+
|
96
|
+
it 'decodes error record' do
|
97
|
+
expect(subject).to match(/#{error_message}/)
|
98
|
+
end
|
99
|
+
end
|
84
100
|
end
|
@@ -69,6 +69,24 @@ describe WinRM::PSRP::ReceiveResponseReader do
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
+
context 'response doc failed pipeline state' do
|
73
|
+
let(:message_type) { WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_state] }
|
74
|
+
let(:test_data_error_xml_template) do
|
75
|
+
ERB.new(stubbed_clixml('pipeline_state.xml.erb'))
|
76
|
+
end
|
77
|
+
let(:pipeline_state) { WinRM::PSRP::MessageData::PipelineState::FAILED }
|
78
|
+
let(:error_message) { 'an error' }
|
79
|
+
let(:category_message) { 'category message' }
|
80
|
+
let(:error_id) { 'Microsoft.PowerShell.Commands.WriteErrorException' }
|
81
|
+
let(:test_data) { test_data_error_xml_template.result(binding) }
|
82
|
+
|
83
|
+
it 'outputs to stderr' do
|
84
|
+
expect(
|
85
|
+
subject.read_output(output_message).stderr
|
86
|
+
).to match(/#{error_message}/)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
72
90
|
context 'response doc writing error to host' do
|
73
91
|
let(:message_type) { WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_host_call] }
|
74
92
|
let(:test_data) do
|
@@ -0,0 +1,88 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<Obj RefId="0">
|
3
|
+
<MS>
|
4
|
+
<I32 N="PipelineState"><%= pipeline_state %></I32>
|
5
|
+
<Obj N="ExceptionAsErrorRecord" RefId="1">
|
6
|
+
<TN RefId="0">
|
7
|
+
<T>System.Management.Automation.ErrorRecord</T>
|
8
|
+
<T>System.Object</T>
|
9
|
+
</TN>
|
10
|
+
<ToString><%= error_message %></ToString>
|
11
|
+
<MS>
|
12
|
+
<Obj N="Exception" RefId="2">
|
13
|
+
<TN RefId="1">
|
14
|
+
<T>System.Management.Automation.RuntimeException</T>
|
15
|
+
<T>Microsoft.PowerShell.CoreClr.Stubs.SystemException</T>
|
16
|
+
<T>System.Exception</T>
|
17
|
+
<T>System.Object</T>
|
18
|
+
</TN>
|
19
|
+
<ToString>System.Management.Automation.RuntimeException: <%= error_message %></ToString>
|
20
|
+
<Props>
|
21
|
+
<S N="ErrorRecord"><%= error_message %></S>
|
22
|
+
<B N="WasThrownFromThrowStatement">true</B>
|
23
|
+
<S N="Message"><%= error_message %></S>
|
24
|
+
<Obj N="Data" RefId="3">
|
25
|
+
<TN RefId="2">
|
26
|
+
<T>System.Collections.ListDictionaryInternal</T>
|
27
|
+
<T>System.Object</T>
|
28
|
+
</TN>
|
29
|
+
<DCT />
|
30
|
+
</Obj>
|
31
|
+
<Nil N="InnerException" />
|
32
|
+
<Nil N="StackTrace" />
|
33
|
+
<Nil N="HelpLink" />
|
34
|
+
<Nil N="Source" />
|
35
|
+
<I32 N="HResult">-2146233088</I32>
|
36
|
+
</Props>
|
37
|
+
</Obj>
|
38
|
+
<S N="TargetObject"><%= error_message %></S>
|
39
|
+
<S N="FullyQualifiedErrorId"><%= error_id %></S>
|
40
|
+
<Obj N="InvocationInfo" RefId="4">
|
41
|
+
<TN RefId="3">
|
42
|
+
<T>System.Management.Automation.InvocationInfo</T>
|
43
|
+
<T>System.Object</T>
|
44
|
+
</TN>
|
45
|
+
<ToString>System.Management.Automation.InvocationInfo</ToString>
|
46
|
+
<Props>
|
47
|
+
<Nil N="MyCommand" />
|
48
|
+
<Obj N="BoundParameters" RefId="5">
|
49
|
+
<TN RefId="4">
|
50
|
+
<T>System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]</T>
|
51
|
+
<T>System.Object</T>
|
52
|
+
</TN>
|
53
|
+
<DCT />
|
54
|
+
</Obj>
|
55
|
+
<Obj N="UnboundArguments" RefId="6">
|
56
|
+
<TN RefId="5">
|
57
|
+
<T>System.Collections.Generic.List`1[[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]</T>
|
58
|
+
<T>System.Object</T>
|
59
|
+
</TN>
|
60
|
+
<LST />
|
61
|
+
</Obj>
|
62
|
+
<I32 N="ScriptLineNumber">1</I32>
|
63
|
+
<I32 N="OffsetInLine">1</I32>
|
64
|
+
<I64 N="HistoryId">-1</I64>
|
65
|
+
<S N="ScriptName"></S>
|
66
|
+
<S N="Line">throw '<%= error_message %>'</S>
|
67
|
+
<S N="PositionMessage">At line:1 char:1_x000D__x000A_+ throw '<%= error_message %>'_x000D__x000A_+ ~~~~~~~~~~~~~~~~~~~~~~~~</S>
|
68
|
+
<S N="PSScriptRoot"></S>
|
69
|
+
<Nil N="PSCommandPath" />
|
70
|
+
<S N="InvocationName"></S>
|
71
|
+
<I32 N="PipelineLength">0</I32>
|
72
|
+
<I32 N="PipelinePosition">0</I32>
|
73
|
+
<B N="ExpectingInput">false</B>
|
74
|
+
<S N="CommandOrigin">Internal</S>
|
75
|
+
<Nil N="DisplayScriptPosition" />
|
76
|
+
</Props>
|
77
|
+
</Obj>
|
78
|
+
<I32 N="ErrorCategory_Category">14</I32>
|
79
|
+
<S N="ErrorCategory_Activity"></S>
|
80
|
+
<S N="ErrorCategory_Reason">RuntimeException</S>
|
81
|
+
<S N="ErrorCategory_TargetName"><%= error_message %></S><S N="ErrorCategory_TargetType">String</S>
|
82
|
+
<S N="ErrorCategory_Message"><%= category_message %></S>
|
83
|
+
<B N="SerializeExtendedInfo">false</B>
|
84
|
+
<S N="ErrorDetails_ScriptStackTrace">at <ScriptBlock>, <No file>: line 1</S>
|
85
|
+
</MS>
|
86
|
+
</Obj>
|
87
|
+
</MS>
|
88
|
+
</Obj>
|
data/winrm.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.required_ruby_version = '>= 1.9.0'
|
29
29
|
s.add_runtime_dependency 'gssapi', '~> 1.2'
|
30
30
|
s.add_runtime_dependency 'httpclient', '~> 2.2', '>= 2.2.0.2'
|
31
|
-
s.add_runtime_dependency 'rubyntlm', '~> 0.6.0'
|
31
|
+
s.add_runtime_dependency 'rubyntlm', '~> 0.6.0', '>= 0.6.1'
|
32
32
|
s.add_runtime_dependency 'logging', ['>= 1.6.1', '< 3.0']
|
33
33
|
s.add_runtime_dependency 'nori', '~> 2.0'
|
34
34
|
s.add_runtime_dependency 'gyoku', '~> 1.0'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: winrm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Wanek
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-09-
|
12
|
+
date: 2016-09-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: gssapi
|
@@ -52,6 +52,9 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.6.0
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 0.6.1
|
55
58
|
type: :runtime
|
56
59
|
prerelease: false
|
57
60
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -59,6 +62,9 @@ dependencies:
|
|
59
62
|
- - "~>"
|
60
63
|
- !ruby/object:Gem::Version
|
61
64
|
version: 0.6.0
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.6.1
|
62
68
|
- !ruby/object:Gem::Dependency
|
63
69
|
name: logging
|
64
70
|
requirement: !ruby/object:Gem::Requirement
|
@@ -245,6 +251,7 @@ files:
|
|
245
251
|
- lib/winrm/psrp/message_data/error_record.rb
|
246
252
|
- lib/winrm/psrp/message_data/pipeline_host_call.rb
|
247
253
|
- lib/winrm/psrp/message_data/pipeline_output.rb
|
254
|
+
- lib/winrm/psrp/message_data/pipeline_state.rb
|
248
255
|
- lib/winrm/psrp/message_data/runspacepool_host_call.rb
|
249
256
|
- lib/winrm/psrp/message_data/runspacepool_state.rb
|
250
257
|
- lib/winrm/psrp/message_data/session_capability.rb
|
@@ -300,6 +307,7 @@ files:
|
|
300
307
|
- tests/spec/psrp/message_data/error_record_spec.rb
|
301
308
|
- tests/spec/psrp/message_data/pipeline_host_call_spec.rb
|
302
309
|
- tests/spec/psrp/message_data/pipeline_output_spec.rb
|
310
|
+
- tests/spec/psrp/message_data/pipeline_state_spec.rb
|
303
311
|
- tests/spec/psrp/message_data/runspace_pool_host_call_spec.rb
|
304
312
|
- tests/spec/psrp/message_data/runspacepool_state_spec.rb
|
305
313
|
- tests/spec/psrp/message_data/session_capability_spec.rb
|
@@ -316,6 +324,7 @@ files:
|
|
316
324
|
- tests/spec/shells/powershell_spec.rb
|
317
325
|
- tests/spec/spec_helper.rb
|
318
326
|
- tests/spec/stubs/clixml/error_record.xml.erb
|
327
|
+
- tests/spec/stubs/clixml/pipeline_state.xml.erb
|
319
328
|
- tests/spec/stubs/responses/get_command_output_response.xml.erb
|
320
329
|
- tests/spec/stubs/responses/get_command_output_response_not_done.xml.erb
|
321
330
|
- tests/spec/stubs/responses/get_powershell_keepalive_response.xml.erb
|