I don't disagree, I built this script about 3 years ago..
SELECT Cmd = 'CREATE LOGIN ['
+ name
+ '] WITH PASSWORD = '
+ CONVERT( varchar(255), password_hash, 1 )
+ ' HASHED, SID = '
+ CONVERT( varchar(255), sid, 1 )
+ ', DEFAULT_DATABASE = ['
+ default_database_name
+ '], CHECK_EXPIRATION = '
+ CASE is_expiration_checked WHEN 1 THEN 'ON, ' ELSE 'OFF, ' END
+ 'CHECK_POLICY = '
+ CASE is_policy_checked WHEN 1 THEN 'ON;' ELSE 'OFF;' END
FROM sys.sql_logins
WHERE type = 'S'
AND name NOT IN ( 'sa', '##MS_PolicyTsqlExecutionLogin##' )
AND is_disabled = 0
UNION ALL
SELECT Cmd = 'CREATE LOGIN ['
+ name
+ '] FROM WINDOWS WITH DEFAULT_DATABASE = ['
+ default_database_name
+ ']; '
FROM sys.server_principals
WHERE type IN ( 'U', 'G' )
AND name NOT IN ( 'NT AUTHORITY\SYSTEM', 'NT AUTHORITY\NETWORK SERVICE', 'NT SERVICE\MSSQLSERVER', 'NT SERVICE\SQLSERVERAGENT' )
AND is_disabled = 0
--ORDER BY name
GO
It could probably use some gussying up but it worked for what I needed to get the logins out..
CEWII