This represents the basic access method to the DMO object model.
Connect -> Access Object Model -> Disconnect

CREATE procedure dmoScriptServer
  @serverName varchar(30) ,
  @outputPath varchar(255) ,
  @style bit = 0
as
declare @dmoServer int

-- Check for trailing slash on backup location param
if (substring(@outputPath, len(@outputPath), 1) <> '\') 
  begin
    set @outputPath = @outputPath + '\'
  end

/* connect to the server where database to be scripted lives */
exec dmoConnectServer @serverName, @dmoServer OUT

if @dmoServer > 0
  begin
    exec dmoScriptServerCollection @serverName, @dmoServer, 'Logins',@outputPath, @style
    exec dmoScriptServerCollection @serverName, @dmoServer, 'Jobserver.Jobs',@outputPath, @style

/* the DMO database scripter is broken. Does not produce useable scripts and may blow up in some situations. 
  An alternate database scripter uses a non dmo routine to script each individual database 
  and it is called from inside the database via dmoScriptDatabase*/    
--    exec dmoScriptServerCollection @serverName, @dmoServer, 'Databases',@outputPath, @style

    exec dmoDisconnectServer @dmoServer
  end