PoshCode Archive  Hex Artifact Content

Artifact 21de7da72c760863d1ac82d8e0dc91aa5addcb12b5ed11a61bb48af1d2c466d4:

  • File SQL-Server-Login.ps1 — part of check-in [68de7807b5] at 2018-06-10 13:40:56 on branch trunk — ############################################################################################# (user: Rob Sewell size: 3029)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69  # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 70 6f 77 65 72 73  i..# api: powers
0020: 68 65 6c 6c 0d 0a 23 20 74 69 74 6c 65 3a 20 20  hell..# title:  
0030: 53 51 4c 20 53 65 72 76 65 72 20 4c 6f 67 69 6e  SQL Server Login
0040: 0d 0a 23 20 64 65 73 63 72 69 70 74 69 6f 6e 3a  ..# description:
0050: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
0060: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0080: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0090: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
00b0: 23 20 76 65 72 73 69 6f 6e 3a 20 30 2e 31 0d 0a  # version: 0.1..
00c0: 23 20 74 79 70 65 3a 20 66 75 6e 63 74 69 6f 6e  # type: function
00d0: 0d 0a 23 20 61 75 74 68 6f 72 3a 20 52 6f 62 20  ..# author: Rob 
00e0: 53 65 77 65 6c 6c 0d 0a 23 20 6c 69 63 65 6e 73  Sewell..# licens
00f0: 65 3a 20 43 43 30 0d 0a 23 20 66 75 6e 63 74 69  e: CC0..# functi
0100: 6f 6e 3a 20 53 68 6f 77 2d 53 51 4c 55 73 65 72  on: Show-SQLUser
0110: 4c 6f 67 69 6e 73 0d 0a 23 20 78 2d 70 6f 73 68  Logins..# x-posh
0120: 63 6f 64 65 2d 69 64 3a 20 34 34 33 30 0d 0a 23  code-id: 4430..#
0130: 20 78 2d 61 72 63 68 69 76 65 64 3a 20 32 30 31   x-archived: 201
0140: 34 2d 30 38 2d 32 30 54 30 39 3a 35 30 3a 34 31  4-08-20T09:50:41
0150: 0d 0a 23 20 78 2d 70 75 62 6c 69 73 68 65 64 3a  ..# x-published:
0160: 20 32 30 31 34 2d 30 39 2d 30 31 54 30 39 3a 31   2014-09-01T09:1
0170: 35 3a 30 30 0d 0a 23 0d 0a 23 20 23 0d 0a 23 20  5:00..#..# #..# 
0180: 4e 41 4d 45 3a 20 53 68 6f 77 2d 53 51 4c 55 73  NAME: Show-SQLUs
0190: 65 72 4c 6f 67 69 6e 73 2e 70 73 31 0d 0a 23 20  erLogins.ps1..# 
01a0: 41 55 54 48 4f 52 3a 20 52 6f 62 20 53 65 77 65  AUTHOR: Rob Sewe
01b0: 6c 6c 20 68 74 74 70 3a 2f 2f 73 71 6c 64 62 61  ll http://sqldba
01c0: 77 69 74 68 74 68 65 62 65 61 72 64 2e 63 6f 6d  withthebeard.com
01d0: 0d 0a 23 20 44 41 54 45 3a 30 36 2f 30 31 2f 32  ..# DATE:06/01/2
01e0: 30 31 33 0d 0a 23 20 23 0d 0a 23 20 43 4f 4d 4d  013..# #..# COMM
01f0: 45 4e 54 53 3a 20 4c 6f 61 64 20 66 75 6e 63 74  ENTS: Load funct
0200: 69 6f 6e 20 74 6f 20 44 69 73 70 6c 61 79 20 61  ion to Display a
0210: 20 6c 69 73 74 20 6f 66 20 73 65 72 76 65 72 2c   list of server,
0220: 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 6c 6f   database and lo
0230: 67 69 6e 20 66 6f 72 20 53 51 4c 20 73 65 72 76  gin for SQL serv
0240: 65 72 73 20 6c 69 73 74 65 64 20 0d 0a 23 20 69  ers listed ..# i
0250: 6e 20 73 71 6c 73 65 72 76 65 72 73 2e 74 78 74  n sqlservers.txt
0260: 20 66 69 6c 65 20 66 72 6f 6d 20 61 20 72 61 6e   file from a ran
0270: 67 65 20 6f 66 20 64 6f 6d 61 69 6e 73 0d 0a 23  ge of domains..#
0280: 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23  ....############
0290: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02e0: 23 0d 0a 23 0d 0a 23 20 4e 41 4d 45 3a 20 53 68  #..#..# NAME: Sh
02f0: 6f 77 2d 53 51 4c 55 73 65 72 4c 6f 67 69 6e 73  ow-SQLUserLogins
0300: 2e 70 73 31 0d 0a 23 20 41 55 54 48 4f 52 3a 20  .ps1..# AUTHOR: 
0310: 52 6f 62 20 53 65 77 65 6c 6c 20 68 74 74 70 3a  Rob Sewell http:
0320: 2f 2f 73 71 6c 64 62 61 77 69 74 68 74 68 65 62  //sqldbawiththeb
0330: 65 61 72 64 2e 63 6f 6d 0d 0a 23 20 44 41 54 45  eard.com..# DATE
0340: 3a 30 36 2f 30 31 2f 32 30 31 33 0d 0a 23 0d 0a  :06/01/2013..#..
0350: 23 20 43 4f 4d 4d 45 4e 54 53 3a 20 4c 6f 61 64  # COMMENTS: Load
0360: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 44 69 73   function to Dis
0370: 70 6c 61 79 20 61 20 6c 69 73 74 20 6f 66 20 73  play a list of s
0380: 65 72 76 65 72 2c 20 64 61 74 61 62 61 73 65 20  erver, database 
0390: 61 6e 64 20 6c 6f 67 69 6e 20 66 6f 72 20 53 51  and login for SQ
03a0: 4c 20 73 65 72 76 65 72 73 20 6c 69 73 74 65 64  L servers listed
03b0: 20 0d 0a 23 20 69 6e 20 73 71 6c 73 65 72 76 65   ..# in sqlserve
03c0: 72 73 2e 74 78 74 20 66 69 6c 65 20 66 72 6f 6d  rs.txt file from
03d0: 20 61 20 72 61 6e 67 65 20 6f 66 20 64 6f 6d 61   a range of doma
03e0: 69 6e 73 0d 0a 23 0d 0a 23 20 55 53 41 47 45 20  ins..#..# USAGE 
03f0: 53 68 6f 77 2d 53 51 4c 55 73 65 72 4c 6f 67 69  Show-SQLUserLogi
0400: 6e 73 20 44 42 41 77 69 74 68 61 42 65 61 72 64  ns DBAwithaBeard
0410: 0d 0a 0d 0a 0d 0a 46 75 6e 63 74 69 6f 6e 20 53  ......Function S
0420: 68 6f 77 2d 53 51 4c 55 73 65 72 4c 6f 67 69 6e  how-SQLUserLogin
0430: 73 20 28 24 75 73 72 29 0d 0a 7b 0d 0a 5b 53 79  s ($usr)..{..[Sy
0440: 73 74 65 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 2e  stem.Reflection.
0450: 41 73 73 65 6d 62 6c 79 5d 3a 3a 4c 6f 61 64 57  Assembly]::LoadW
0460: 69 74 68 50 61 72 74 69 61 6c 4e 61 6d 65 28 27  ithPartialName('
0470: 4d 69 63 72 6f 73 6f 66 74 2e 53 71 6c 53 65 72  Microsoft.SqlSer
0480: 76 65 72 2e 53 4d 4f 27 29 20 7c 20 6f 75 74 2d  ver.SMO') | out-
0490: 6e 75 6c 6c 0d 0a 0d 0a 23 20 53 75 70 70 72 65  null....# Suppre
04a0: 73 73 20 45 72 72 6f 72 20 6d 65 73 73 61 67 65  ss Error message
04b0: 73 20 2d 20 54 68 65 79 20 77 69 6c 6c 20 62 65  s - They will be
04c0: 20 64 69 73 70 6c 61 79 65 64 20 61 74 20 74 68   displayed at th
04d0: 65 20 65 6e 64 0d 0a 0d 0a 24 45 72 72 6f 72 41  e end....$ErrorA
04e0: 63 74 69 6f 6e 50 72 65 66 65 72 65 6e 63 65 20  ctionPreference 
04f0: 3d 20 22 53 69 6c 65 6e 74 6c 79 43 6f 6e 74 69  = "SilentlyConti
0500: 6e 75 65 22 0d 0a 23 63 6c 73 0d 0a 0d 0a 23 20  nue"..#cls....# 
0510: 50 75 6c 6c 20 61 20 6c 69 73 74 20 6f 66 20 73  Pull a list of s
0520: 65 72 76 65 72 73 20 66 72 6f 6d 20 61 20 6c 6f  ervers from a lo
0530: 63 61 6c 20 74 65 78 74 20 66 69 6c 65 0d 0a 0d  cal text file...
0540: 0a 24 73 65 72 76 65 72 73 20 3d 20 47 65 74 2d  .$servers = Get-
0550: 43 6f 6e 74 65 6e 74 20 27 63 3a 5c 74 65 6d 70  Content 'c:\temp
0560: 5c 73 71 6c 73 65 72 76 65 72 73 2e 74 78 74 27  \sqlservers.txt'
0570: 0d 0a 0d 0a 23 20 43 72 65 61 74 65 20 61 6e 20  ....# Create an 
0580: 61 72 72 61 79 20 66 6f 72 20 74 68 65 20 75 73  array for the us
0590: 65 72 6e 61 6d 65 20 61 6e 64 20 65 61 63 68 20  ername and each 
05a0: 64 6f 6d 61 69 6e 20 73 6c 61 73 68 20 75 73 65  domain slash use
05b0: 72 6e 61 6d 65 0d 0a 0d 0a 24 6c 6f 67 69 6e 73  rname....$logins
05c0: 20 3d 20 40 28 22 44 4f 4d 41 49 4e 31 5c 24 75   = @("DOMAIN1\$u
05d0: 73 72 22 2c 22 44 4f 4d 41 49 4e 32 5c 24 75 73  sr","DOMAIN2\$us
05e0: 72 22 2c 20 22 44 4f 4d 41 49 4e 33 5c 24 75 73  r", "DOMAIN3\$us
05f0: 72 22 20 2c 20 22 24 75 73 72 22 29 0d 0a 0d 0a  r" , "$usr")....
0600: 09 09 09 09 57 72 69 74 65 2d 48 6f 73 74 20 22  ....Write-Host "
0610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0630: 23 22 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20  #" ..           
0640: 20 20 20 20 20 57 72 69 74 65 2d 48 6f 73 74 20       Write-Host 
0650: 22 53 51 4c 20 53 65 72 76 65 72 73 2c 20 44 61  "SQL Servers, Da
0660: 74 61 62 61 73 65 73 20 61 6e 64 20 4c 6f 67 69  tabases and Logi
0670: 6e 73 20 66 6f 72 20 60 6e 24 6c 6f 67 69 6e 73  ns for `n$logins
0680: 20 64 69 73 70 6c 61 79 65 64 20 62 65 6c 6f 77   displayed below
0690: 20 22 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20   " ..           
06a0: 20 20 20 20 20 57 72 69 74 65 2d 48 6f 73 74 20       Write-Host 
06b0: 22 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  "###############
06c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
06d0: 23 23 20 60 6e 22 20 0d 0a 0d 0a 09 23 6c 6f 6f  ## `n" .....#loo
06e0: 70 20 74 68 72 6f 75 67 68 20 65 61 63 68 20 73  p through each s
06f0: 65 72 76 65 72 20 61 6e 64 20 65 61 63 68 20 64  erver and each d
0700: 61 74 61 62 61 73 65 20 61 6e 64 20 64 69 73 70  atabase and disp
0710: 6c 61 79 20 75 73 65 72 6e 61 6d 65 73 2c 20 73  lay usernames, s
0720: 65 72 76 65 72 73 20 61 6e 64 20 64 61 74 61 62  ervers and datab
0730: 61 73 65 73 0d 0a 20 20 20 20 20 20 20 57 72 69  ases..       Wri
0740: 74 65 2d 48 6f 73 74 20 22 20 53 65 72 76 65 72  te-Host " Server
0750: 20 4c 6f 67 69 6e 73 60 6e 22 0d 0a 20 20 20 20   Logins`n"..    
0760: 20 20 20 20 20 66 6f 72 65 61 63 68 28 24 73 65       foreach($se
0770: 72 76 65 72 20 69 6e 20 24 73 65 72 76 65 72 73  rver in $servers
0780: 29 0d 0a 7b 0d 0a 20 20 20 20 24 73 72 76 20 3d  )..{..    $srv =
0790: 20 4e 65 77 2d 4f 62 6a 65 63 74 20 28 27 4d 69   New-Object ('Mi
07a0: 63 72 6f 73 6f 66 74 2e 53 71 6c 53 65 72 76 65  crosoft.SqlServe
07b0: 72 2e 4d 61 6e 61 67 65 6d 65 6e 74 2e 53 6d 6f  r.Management.Smo
07c0: 2e 53 65 72 76 65 72 27 29 20 24 73 65 72 76 65  .Server') $serve
07d0: 72 0d 0a 20 20 20 20 0d 0a 20 20 20 20 09 09 66  r..    ..    ..f
07e0: 6f 72 65 61 63 68 28 24 6c 6f 67 69 6e 20 69 6e  oreach($login in
07f0: 20 24 6c 6f 67 69 6e 73 29 0d 0a 09 09 7b 0d 0a   $logins)....{..
0800: 20 20 20 20 0d 0a 20 20 20 20 09 09 09 69 66 28      ..    ...if(
0810: 24 73 72 76 2e 4c 6f 67 69 6e 73 2e 43 6f 6e 74  $srv.Logins.Cont
0820: 61 69 6e 73 28 24 6c 6f 67 69 6e 29 29 0d 0a 09  ains($login))...
0830: 09 09 7b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ..{....         
0840: 20 20 20 20 20 20 20 57 72 69 74 65 2d 48 6f 73         Write-Hos
0850: 74 20 22 20 24 73 72 76 20 2c 20 24 6c 6f 67 69  t " $srv , $logi
0860: 6e 20 22 20 0d 0a 0d 0a 09 09 09 7d 0d 0a 20 20  n " .......}..  
0870: 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20            ..    
0880: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
0890: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 0d 0a 20            {.... 
08a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
08b0: 20 20 20 20 20 20 20 7d 0d 0a 7d 0d 0a 20 20 20         }..}..   
08c0: 20 20 20 57 72 69 74 65 2d 48 6f 73 74 20 22 60     Write-Host "`
08d0: 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  n###############
08e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
08f0: 23 23 23 23 23 23 23 23 23 23 22 0d 0a 20 20 20  ##########"..   
0900: 20 20 57 72 69 74 65 2d 48 6f 73 74 20 22 60 6e    Write-Host "`n
0910: 20 44 61 74 61 62 61 73 65 20 4c 6f 67 69 6e 73   Database Logins
0920: 60 6e 22 20 20 20 20 20 20 20 20 20 20 20 20 20  `n"             
0930: 20 20 0d 0a 66 6f 72 65 61 63 68 28 24 73 65 72    ..foreach($ser
0940: 76 65 72 20 69 6e 20 24 73 65 72 76 65 72 73 29  ver in $servers)
0950: 0d 0a 7b 0d 0a 09 24 73 72 76 20 3d 20 4e 65 77  ..{...$srv = New
0960: 2d 4f 62 6a 65 63 74 20 28 27 4d 69 63 72 6f 73  -Object ('Micros
0970: 6f 66 74 2e 53 71 6c 53 65 72 76 65 72 2e 4d 61  oft.SqlServer.Ma
0980: 6e 61 67 65 6d 65 6e 74 2e 53 6d 6f 2e 53 65 72  nagement.Smo.Ser
0990: 76 65 72 27 29 20 24 73 65 72 76 65 72 0d 0a 20  ver') $server.. 
09a0: 20 20 20 0d 0a 09 66 6f 72 65 61 63 68 28 24 64     ...foreach($d
09b0: 61 74 61 62 61 73 65 20 69 6e 20 24 73 72 76 2e  atabase in $srv.
09c0: 44 61 74 61 62 61 73 65 73 29 0d 0a 09 7b 0d 0a  Databases)...{..
09d0: 09 09 66 6f 72 65 61 63 68 28 24 6c 6f 67 69 6e  ..foreach($login
09e0: 20 69 6e 20 24 6c 6f 67 69 6e 73 29 0d 0a 09 09   in $logins)....
09f0: 7b 0d 0a 09 09 09 69 66 28 24 64 61 74 61 62 61  {.....if($databa
0a00: 73 65 2e 55 73 65 72 73 2e 43 6f 6e 74 61 69 6e  se.Users.Contain
0a10: 73 28 24 6c 6f 67 69 6e 29 29 0d 0a 09 09 09 7b  s($login)).....{
0a20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
0a30: 20 20 20 20 57 72 69 74 65 2d 48 6f 73 74 20 22      Write-Host "
0a40: 20 24 73 72 76 20 2c 20 24 64 61 74 61 62 61 73   $srv , $databas
0a50: 65 20 2c 20 24 6c 6f 67 69 6e 20 22 20 0d 0a 0d  e , $login " ...
0a60: 0a 09 09 09 7d 0d 0a 20 20 20 20 20 20 20 20 20  ....}..         
0a70: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
0a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0aa0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
0ab0: 69 6e 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  inue..          
0ac0: 20 20 20 20 20 20 20 20 20 20 7d 20 20 20 0d 0a            }   ..
0ad0: 20 20 20 20 20 20 20 20 20 20 20 0d 0a 09 09 7d             ....}
0ae0: 0d 0a 09 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ...}..    }..   
0af0: 57 72 69 74 65 2d 48 6f 73 74 20 22 60 6e 23 23  Write-Host "`n##
0b00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b20: 23 23 23 23 23 23 23 22 0d 0a 20 20 20 57 72 69  #######"..   Wri
0b30: 74 65 2d 48 6f 73 74 20 22 46 69 6e 69 73 68 65  te-Host "Finishe
0b40: 64 20 2d 20 49 66 20 74 68 65 72 65 20 61 72 65  d - If there are
0b50: 20 6e 6f 20 6c 6f 67 69 6e 73 20 64 69 73 70 6c   no logins displ
0b60: 61 79 65 64 20 61 62 6f 76 65 20 74 68 65 6e 20  ayed above then 
0b70: 6e 6f 20 6c 6f 67 69 6e 73 20 77 65 72 65 20 66  no logins were f
0b80: 6f 75 6e 64 21 22 20 20 20 20 0d 0a 20 20 20 57  ound!"    ..   W
0b90: 72 69 74 65 2d 48 6f 73 74 20 22 23 23 23 23 23  rite-Host "#####
0ba0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0bb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0bc0: 23 23 23 23 22 20 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a  ####" ..........
0bd0: 0d 0a 7d 0d 0a                                   ..}..