Dotnetnuke 有没有办法将一长串新用户导入DNN

Dotnetnuke 有没有办法将一长串新用户导入DNN,dotnetnuke,Dotnetnuke,我有一个新的DNN站点和一长串必须添加的用户。如何使用脚本创建这些新用户 我看到过出售的模块,但如果可能的话,我希望避免购买模块。我正在使用DNN 4.4和4.9,遇到了同样的问题。我的解决方案是为此开发一个DNN模块,可以从CSV或制表符分隔的文本文件导入。我的建议是购买或开发一个模块 如果你有兴趣写你自己的,我可以提供你的代码片段做什么。请告诉我……Snowcover有一些内置模块-()- 我还从一个或另一个电子表格或其他数据库编写了脚本来实现这一点 执行此操作的sql脚本实际上只需要添加正

我有一个新的DNN站点和一长串必须添加的用户。如何使用脚本创建这些新用户


我看到过出售的模块,但如果可能的话,我希望避免购买模块。

我正在使用DNN 4.4和4.9,遇到了同样的问题。我的解决方案是为此开发一个DNN模块,可以从CSV或制表符分隔的文本文件导入。我的建议是购买或开发一个模块


如果你有兴趣写你自己的,我可以提供你的代码片段做什么。请告诉我……

Snowcover有一些内置模块-()-

我还从一个或另一个电子表格或其他数据库编写了脚本来实现这一点

执行此操作的sql脚本实际上只需要添加正确的信息

下面是我用来从一些access数据库导入的大多数脚本-可能不是很好或很优雅,但它可以工作

SET NOCOUNT ON;
declare @SQLText nvarchar(max)
DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int

BEGIN TRY
BEGIN TRANSACTION
    -- Insert statements for procedure here
    DECLARE @ApplicationName nvarchar(256)
    SET @ApplicationName = 'DotNetNuke'


    DECLARE @LastName nvarchar(max) 
    DECLARE @FirstName nvarchar(max) 
    DECLARE @EmployeeID nvarchar(max) 
    DECLARE @ContactEmail nvarchar(max)


    DECLARE UserLoop CURSOR Fast_Forward
    FOR SELECT [Employee] as EmployeeID, isnull([LastName],'') as employee_Lastname, isnull([FirstName],'') as emplyee_firstname, 'na@na.com' as contactemail
     from openrowset('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=C:\_projects\hc.xls;HDR=YES', 'SELECT *  FROM [Sheet1$]')
        --WHERE CustomerID in (SELECT OldID FROM dbo.RCIWebApps_LocationInfo WHERE OwnerID = @NewCustomerNumber)

    Open UserLoop


    FETCH NEXT FROM UserLoop INTO @EmployeeID, @LastName, @FirstName, @ContactEmail

    WHILE @@FETCH_STATUS = 0
        BEGIN
            ----

            ---Make unique usernames - adding one to the list until it doesnt match
            DECLARE @NewUsername nvarchar(max)
            SET @NewUserName = REPLACE(@Firstname + '_' + @LastName, ',','_')
            DECLARE @UserNameTest int
            SET @UsernameTest = 1
            DECLARE @UserNameNumber int
            SET @UserNameNumber = 1
            DECLARE @UserNameTemp nvarchar(max)
            SET @UserNameTemp = @NewUserName
            WHILE @UserNameTest > 0  
                BEGIN
                    SELECT @UsernameTest = count(*) FROM rcidnn..Users WHERE Username = @UserNameTemp  
                    IF @USernametest > 0 
                        BEGIN                   
                            SET @UsernameTemp = @NewUserName + convert(nvarchar(max),@UserNameNumber)
                            SET @UserNameNumber = @UserNameNumber + 1                      
                        END
                END

            SET @NewUserName = @UserNameTemp
            ----
            DECLARE @Password nvarchar(128)
            --From the existing user
            SET @Password = 'iIFBTBSKXithnIDFau1miTih903eL/z5qgbcyMOflIM='

            DECLARE @PasswordSalt nvarchar(128)
            --From the existing user
            SET @PasswordSalt = '4DmxPzt6MYScaGuwNHeUDw=='

            DECLARE @PasswordQuestion nvarchar(256)
            SET @PasswordQuestion = ''

            DECLARE @PasswordAnswer nvarchar(128)
            SET @PasswordAnswer = ''

            DECLARE @IsApproved bit
            SET @IsApproved = 1

            DECLARE @CurrentTimeUtc datetime 
            SET @CurrentTimeUtc = GETDATE()

            DECLARE @CreateDate datetime
            SET @CreateDate = @CurrentTimeUtc

            DECLARE @UniqueEmail int
            SET @UniqueEmail = 0

            DECLARE @PasswordFormat int
            SET @PasswordFormat = 2 --NOTE: Value from existing user!

            DECLARE @PortalId int
            SET @PortalId = 6    --The id of your portal

            Declare @UserId uniqueidentifier
            DECLARE @DNNUserId int

            --Make the stored procedure call
            EXEC rcidnn.dbo.aspnet_Membership_CreateUser @ApplicationName, @NewUsername, @Password,
                            @PasswordSalt, @contactemail, @passwordquestion, @PasswordAnswer, 
                            @IsApproved, @CurrentTimeUtc, @CreateDate, @UniqueEmail,
                            @PasswordFormat, @UserId

            --Insert the record into the DotNetNuke users table
print @NewUsername
            INSERT INTO rcidnn..users (Username, FirstName, LastName, IsSuperUser, Email,
                                DisplayName, UpdatePassword)
                VALUES(@NewUsername, @FirstName, @LastName, 0, @ContactEmail, @Firstname + ' ' + @LastName, 0)

            --Get the new userid, from the DNN users table
            SELECT @dnnuserid = userid
            FROM rcidnn..Users
            WHERE username = @NewUsername

            --Now, insert the record into the user portals table
            INSERT INTO rcidnn..UserPortals (userId, PortalId, CreatedDate)
                VALUES(@dnnuserid, @PortalId, GETDATE()) 

            --Now Give the user permissions to the RECISTERED Users group
            INSERT INTO rcidnn..UserRoles (userId, roleId)
            SELECT @dnnuserid,
                    roleId
            FROM rcidnn..Roles
            WHERE (RoleName = 'Registered Users' or RoleName = 'Subscribers' or RoleName = 'G - Location View')
                and portalid = @PortalId 

            --ADD info into profile?? 
            INSERT rcidnn.dbo.UserProfile
            VALUES ( @DNNUserID, 167, @NewCustomerNumber, null, 2, getdate())


            ----
            FETCH NEXT FROM UserLoop INTO @EmployeeID, @LastName, @FirstName, @ContactEmail

        END
    CLOSE Userloop
    DEALLOCATE userloop 

COMMIT
    Print 'Transfered'
END TRY

BEGIN CATCH
    -- Whoops, there was an error
    IF @@TRANCOUNT > 0
     ROLLBACK

    -- Raise an error with the details of the exception
    SELECT @ErrMsg = ERROR_MESSAGE(),
         @ErrSeverity = ERROR_SEVERITY()

    RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH

我很幸运使用此模块导入用户。它使用易于修改的XML文件导入和导出用户。如果您使用excel将用户列表插入到xml文件中,然后将其导入,那么您就可以开始了。最好的部分是该模块是免费的。

对于仍在搜索开放源代码模块以导入用户的任何人,有一个可以与最新的DNN版本配合使用。它以Excel电子表格作为输入。

我使用过的最好的产品是“批量用户管理器”。这不是免费的,但值得花30美元。这将节省工作时间,时间就是金钱! 以下是DNN商店上产品的链接:

您是指从另一个数据库、旧dnn或新用户的数据输入导入?这看起来很有希望。密码是怎么回事?密码就是这样的吗?我想在电子表格中指定密码。我从来没有对此做过任何事情-我们让人们在第一次登录时重置-这是在数据库中导入-我们永远无法找到如何在DBDNNVillage.com中正确生成密码似乎不再存在