winrm 0.0.2 → 0.0.3

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -153,7 +153,9 @@ module WinRM
153
153
  # Get the Output of the given shell and command
154
154
  # @param [String] shell_id The shell id on the remote machine. See #open_shell
155
155
  # @param [String] command_id The command id on the remote machine. See #run_command
156
- # @return [Hash] :stdout and :stderr
156
+ # @return [Hash] Returns a Hash with a key :exitcode and :data. Data is an Array of Hashes where the cooresponding key
157
+ # is either :stdout or :stderr. The reason it is in an Array so so we can get the output in the order it ocurrs on
158
+ # the console.
157
159
  def get_command_output(shell_id, command_id)
158
160
  header = {}.merge(resource_uri_cmd).merge(action_receive).merge(selector_shell_id(shell_id))
159
161
 
@@ -164,15 +166,10 @@ module WinRM
164
166
  end
165
167
  end
166
168
 
167
- cmd_stdout = ''
168
- cmd_stderr = ''
169
- (resp/"//*[@Name='stdout']").each do |n|
170
- next if n.to_s.nil?
171
- cmd_stdout << Base64.decode64(n.to_s)
172
- end
173
- (resp/"//*[@Name='stderr']").each do |n|
169
+ output = {:data => []}
170
+ (resp/"//#{NS_WIN_SHELL}:Stream").each do |n|
174
171
  next if n.to_s.nil?
175
- cmd_stderr << Base64.decode64(n.to_s)
172
+ output[:data] << {n['Name'].to_sym => Base64.decode64(n.to_s)}
176
173
  end
177
174
 
178
175
  # We may need to get additional output if the stream has not finished.
@@ -185,12 +182,13 @@ module WinRM
185
182
  # <rsp:ExitCode>0</rsp:ExitCode>
186
183
  # </rsp:CommandState>
187
184
  if((resp/"//#{NS_WIN_SHELL}:ExitCode").empty?)
188
- more_out = get_command_output(shell_id,command_id)
189
- cmd_stdout << more_out[:stdout]
190
- cmd_stderr << more_out[:stderr]
185
+ output.merge!(get_command_output(shell_id,command_id)) do |key, old_data, new_data|
186
+ old_data += new_data
187
+ end
188
+ else
189
+ output[:exitcode] = (resp/"//#{NS_WIN_SHELL}:ExitCode").first.to_i
191
190
  end
192
-
193
- {:stdout => cmd_stdout, :stderr => cmd_stderr}
191
+ output
194
192
  end
195
193
 
196
194
  # Clean-up after a command.
@@ -218,13 +216,29 @@ module WinRM
218
216
  true
219
217
  end
220
218
 
219
+ # Run a CMD command
220
+ # @param [String] command The command to run on the remote system
221
+ # @return [Hash] :stdout and :stderr
222
+ def run_cmd(command)
223
+ shell_id = open_shell
224
+ command_id = run_command(shell_id, command)
225
+ command_output = get_command_output(shell_id, command_id)
226
+ cleanup_command(shell_id, command_id)
227
+ close_shell(shell_id)
228
+ command_output
229
+ end
230
+
231
+
221
232
  # Run a Powershell script that resides on the local box.
222
233
  # @param [String] script_file The string representing the path to a Powershell script
223
234
  # @return [Hash] :stdout and :stderr
224
235
  def run_powershell_script(script_file)
225
236
  script = File.read(script_file)
226
- script = script.chars.to_a.join("\x00").chomp.encode('ASCII-8BIT')
227
- script = Base64.strict_encode64(script)
237
+ script = script.chars.to_a.join("\x00").chomp
238
+ if(defined?(script.encode))
239
+ script = script.encode('ASCII-8BIT')
240
+ end
241
+ script = Base64.encode64(script)
228
242
 
229
243
  shell_id = open_shell
230
244
  command_id = run_command(shell_id, "powershell -encodedCommand #{script}")
data/lib/winrm.rb CHANGED
@@ -72,6 +72,12 @@ module WinRM
72
72
  @winrm = SOAP::WinRMWebService.new
73
73
  end
74
74
 
75
+ # Run a CMD command
76
+ # @see WinRM::SOAP::WinRMWebService#run_cmd
77
+ def cmd(command)
78
+ @winrm.run_cmd(command)
79
+ end
80
+
75
81
  # Run a Powershell script
76
82
  # @see WinRM::SOAP::WinRMWebService#run_powershell_script
77
83
  def powershell(script_file)
@@ -18,7 +18,7 @@ describe "Test remote Powershell features via WinRM" do
18
18
  it 'should run a test Powershell script' do
19
19
  winrm = WinRM::WinRM.instance
20
20
  output = winrm.powershell('spec/test.ps1')
21
- output[:stdout].should_not be_empty
21
+ output[:exitcode].should eql(0)
22
22
  end
23
23
 
24
24
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: winrm
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 25
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 2
9
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
10
11
  platform: ruby
11
12
  authors:
12
13
  - Dan Wanek
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-08-19 00:00:00 -05:00
18
+ date: 2010-09-07 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -25,6 +26,7 @@ dependencies:
25
26
  requirements:
26
27
  - - ">="
27
28
  - !ruby/object:Gem::Version
29
+ hash: 3
28
30
  segments:
29
31
  - 0
30
32
  version: "0"
@@ -38,6 +40,7 @@ dependencies:
38
40
  requirements:
39
41
  - - ">="
40
42
  - !ruby/object:Gem::Version
43
+ hash: 3
41
44
  segments:
42
45
  - 0
43
46
  version: "0"
@@ -51,6 +54,7 @@ dependencies:
51
54
  requirements:
52
55
  - - ">="
53
56
  - !ruby/object:Gem::Version
57
+ hash: 3
54
58
  segments:
55
59
  - 0
56
60
  version: "0"
@@ -64,6 +68,7 @@ dependencies:
64
68
  requirements:
65
69
  - - ">="
66
70
  - !ruby/object:Gem::Version
71
+ hash: 3
67
72
  segments:
68
73
  - 0
69
74
  version: "0"
@@ -77,6 +82,7 @@ dependencies:
77
82
  requirements:
78
83
  - - ">="
79
84
  - !ruby/object:Gem::Version
85
+ hash: 3
80
86
  segments:
81
87
  - 0
82
88
  version: "0"
@@ -123,6 +129,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
129
  requirements:
124
130
  - - ">="
125
131
  - !ruby/object:Gem::Version
132
+ hash: 57
126
133
  segments:
127
134
  - 1
128
135
  - 8
@@ -133,6 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
140
  requirements:
134
141
  - - ">="
135
142
  - !ruby/object:Gem::Version
143
+ hash: 3
136
144
  segments:
137
145
  - 0
138
146
  version: "0"