Skip to content

Instantly share code, notes, and snippets.

@potatoqualitee
Last active May 11, 2016 15:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save potatoqualitee/c93fa9454d52f9eda98c to your computer and use it in GitHub Desktop.
Save potatoqualitee/c93fa9454d52f9eda98c to your computer and use it in GitHub Desktop.
SQL Login Report in PowerShell
# Solution for http://powershell.com/cs/forums/t/23737.aspx
[void][Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")
$server = New-Object Microsoft.SqlServer.Management.Smo.Server "sqlserver"
$servername = $server.netname
$sqlinstancename = $server.DomainInstanceName
$dbs = $server.databases | Where-Object { 'tempdb','Pubs','Northwind','model' -notcontains $_.Name }
$loginreport = @()
foreach ($db in $dbs) {
$users = $db.users | Where-Object { 'guest','sys','INFORMATION_SCHEMA'-notcontains $_.Name -and $_.Name -notlike '*##*' -and $_.Name -notlike '*$*' -and $_.Name -ne $null }
foreach ($user in $users) {
$username = $user.name
$userid = $user.id
$roles = $user.EnumRoles() -join ","
$defaultschema = $user.Properties["DefaultSchema"].Value
$sid = "0x"; $user.sid | ForEach-Object { $sid += ("{0:X}" -f $_).PadLeft(2, "0") }
$login = $server.logins["$($user.login)"]
$loginname = $login.name
if ($login -eq $null) {
$userstatus = "InActive"
$defaultdb = $null
$createdate = $user.Properties["CreateDate"].Value
} else {
$defaultdb = $login.Properties["DefaultDatabase"].Value
$createdate = $login.Properties["CreateDate"].Value
if ($login.hasAccess -eq $false -or $login.IsDisabled -eq $true) {
$userstatus = "InActive"
} else { $userstatus = "Active" }
}
$loginreport += [PSCustomObject]@{
ServerName = $servername
SqlInstanceName = $sqlinstancename
DatabaseName = $db.name
UserName = $username
UserId = $userid
Roles = $roles
DefaultSchema = $defaultschema
SID = $SID
Login = $loginname
UserStatus = $userstatus
DefaultDB = $defaultdb
CreateDate = $createdate
}
}
}
$loginreport
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment