code: def get_command_output(self, shell_id, command_id):
          
          stdout_buffer, stderr_buffer = [], []
          command_done = False
          while not command_done:
              try:
                  stdout, stderr, return_code, command_done = \
                      self._raw_get_command_output(shell_id, command_id)
                  stdout_buffer.append(stdout)
                  stderr_buffer.append(stderr)
              except WinRMOperationTimeoutError as e:
                  # this is an expected error when waiting for a long-running process, just silently retry
                  pass
          return b''.join(stdout_buffer), b''.join(stderr_buffer), return_code
docs: Get the Output of the given shell and command
          @param string shell_id: The shell id on the remote machine.
           See #open_shell
          @param string command_id: The command id on the remote machine.
           See #run_command
          #@return [Hash] Returns a Hash with a key :exitcode and :data.
           Data is an Array of Hashes where the cooresponding key
          #   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
          #   the console.