Skip to main content

Automating adding user to user groups

Every now and then, I would come across situation, where I have to add new member to project. As part of the process, I have to give the new guys user permission to the machine (mostly BizTalk Server machines). When you have multiple servers, the task gets monotonous. During once such, instance, I sought the enlightenment google caters and found below script to do the same, in matter of seconds. I am not sure which article guided me to the solution, so I am not referencing it.

Below is the script for adding users to group, generally for stand alone BizTalk machine,

$group = [ADSI]"WinNT://localhost/Users"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/BizTalk Application Users"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/BizTalk Isolated Host Users"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/BizTalk Server Administrators"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/BizTalk Server Operators"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/SQLServerMSASUser`$BTS2016`$MSSQLSERVER"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/SSO Administrators"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/SSO Affiliate Administrators"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/Administrators"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)



In order to remove user, use below script,

$group = [ADSI]"WinNT://localhost/Users"
$group.psbase.Invoke("remove",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/BizTalk Application Users"
$group.psbase.Invoke("remove",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/BizTalk Isolated Host Users"
$group.psbase.Invoke("remove",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/BizTalk Server Administrators"
$group.psbase.Invoke("remove",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/BizTalk Server Operators"
$group.psbase.Invoke("remove",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/SQLServerMSASUser`$BTS2016`$MSSQLSERVER"
$group.psbase.Invoke("remove",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/SSO Administrators"
$group.psbase.Invoke("remove",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/SSO Affiliate Administrators"
$group.psbase.Invoke("remove",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/Administrators"
$group.psbase.Invoke("remove",([ADSI]"WinNT://<domain>/<username>").path)


Powershell has active directory module, which you can use to add/remove user to group, in case BizTalk access is managed through AD.

Comments

Popular posts from this blog

Undoing the mistake of selecting Sticky Notes as notes keep

Sticky Notes seems straight forward means to keep notes that you need handy, like quick notes on command you use frequently. Unfortunately, once your notes reaches certain number, the program starts to lag in response i.e. your click or select will not register and you end getting frustrated. I been there and I resorted to copying and pasting notes from sticky notes to more awesome OneNote. I soon got tired of unresponsive sticky note and resorted to finding where the data is stored and how to retrieve it. Following are my finding(or googling), 1. In Windows 10, Sticky notes stores data at %LocalAppData%/Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState and inside file with extension *.sqlite. 2. Now to open the file we can use windows tools under sqlite.org download page. I used sqlite3.exe 3. Type in following commands after getting to folder where sqlite3.exe exists, sqlite3.exe - This is to get to sqlite prompt .excel - This is to specify that following

Getting user First Name and Last Name from Active Directory

Recently, I had to create a asp.net MVC portal for organizing test messages. Since site is personalized for User, we were required to fetch and disply username, when they login. This being intranet site, user is authenticated using Windows Authentication. Windows user names are most of the time are mix of literal, not conveying users First and Last name. I used following code to get User First and Last name, using DirectorySearcher class to query Active Directory. Since user name in HttpContext is in format DomainName\\UserName, I had to extract user name alone and use it filter. using System.DirectoryServices; ... ... DirectorySearcher ds = new DirectorySearcher(); var indexOfBS = User.Identity.Name.IndexOf( "\\" ); ds.Filter = String.Format( "((SAMAccountName={0}))" , User.Identity.Name.Substring(indexOfBS + 1, User.Identity.Name.Length - indexOfBS - 1)); ds.PropertiesToLoad.Add( "givenName" ); ds.PropertiesToLoad.Add( "sn" ); var direc