winrm 2.0.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|