Add 'How user is accessing SQL instance.ps1'
This commit is contained in:
parent
b4f180878d
commit
27e14a5c5d
|
@ -0,0 +1,102 @@
|
||||||
|
cls
|
||||||
|
|
||||||
|
<#--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
|
||||||
|
* How is a user accessing a SQL instance?
|
||||||
|
*
|
||||||
|
* This script will show through what login and AD groups a user is accessing
|
||||||
|
* a SQL instance.
|
||||||
|
*
|
||||||
|
--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==#>
|
||||||
|
|
||||||
|
<#--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
|
||||||
|
Enter variables
|
||||||
|
--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==#>
|
||||||
|
|
||||||
|
<# What SQL instance to search on? #>
|
||||||
|
$instance_name = "SERVER\INSTANCE";
|
||||||
|
|
||||||
|
<# Set name to search for as you normally would in dsquery, like > Lastname, first* #>
|
||||||
|
$user_search_term = "lastname, first*";
|
||||||
|
|
||||||
|
<# Set domain name including back slash, like > DOMAIN\ #>
|
||||||
|
$domain_name = 'DOMAINNAME\';
|
||||||
|
|
||||||
|
|
||||||
|
<#--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==#>
|
||||||
|
<#--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==#>
|
||||||
|
<# EVERYTHING BELOW CAN BE LEFT AS-IS #>
|
||||||
|
<#--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==#>
|
||||||
|
<#--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==#>
|
||||||
|
|
||||||
|
if (Get-Module -ListAvailable -Name SqlServer) {
|
||||||
|
Write-Host "Module exists"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host "Module does not exist. You need to run:" `t`t "Install-Module -Name SqlServer";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$usernames = dsquery user -name $user_search_term -o rdn;
|
||||||
|
|
||||||
|
if($usernames.Count -gt 1){
|
||||||
|
Write-Host "There are " $usernames.Count " usernames that match your search." -BackgroundColor White -ForegroundColor Red;
|
||||||
|
$usernames;
|
||||||
|
Write-Host "Continue? Y or N" -BackgroundColor White -ForegroundColor Red;
|
||||||
|
$continue = Read-Host;
|
||||||
|
|
||||||
|
if($continue.ToUpper() -eq 'N'){
|
||||||
|
Write-Host "ABORTING" -ForegroundColor Black -BackgroundColor RED;
|
||||||
|
Break Script;
|
||||||
|
}elseif($continue.ToUpper() -eq 'Y'){
|
||||||
|
Write-Host "CONTINUING" -ForegroundColor Black -BackgroundColor GREEN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$groups = @();
|
||||||
|
|
||||||
|
foreach($username in $usernames)
|
||||||
|
{
|
||||||
|
$groups += dsquery user -name $username | dsget user -samid;
|
||||||
|
$groups += dsquery user -name $username | dsget user -memberof -expand | dsget group -samid | Sort -Unique ;
|
||||||
|
}
|
||||||
|
|
||||||
|
$groups = $groups | Sort -Unique;
|
||||||
|
|
||||||
|
$groups_trimmed = @();
|
||||||
|
foreach($group in $groups)
|
||||||
|
{
|
||||||
|
# AD group names can have single quotes in them
|
||||||
|
# Escape single quotes with double single quotes
|
||||||
|
$group = $group.replace("'", "''")
|
||||||
|
$groups_trimmed += '''' + $group.Trim() + '''';
|
||||||
|
}
|
||||||
|
|
||||||
|
$groups = $groups_trimmed;
|
||||||
|
$groups_csv = $groups -join ",";
|
||||||
|
|
||||||
|
<# SET NOCOUNT ON Removes rows affected statement #>
|
||||||
|
$query = "SET NOCOUNT ON;SELECT [name] FROM sys.server_principals where REPLACE([name], '$domain_name','') IN ($groups_csv)";
|
||||||
|
|
||||||
|
<# -h-1 removes headers #>
|
||||||
|
$res = $null;
|
||||||
|
$res = Invoke-Sqlcmd -ServerInstance $instance_name -Database master -Query $query ;
|
||||||
|
|
||||||
|
$res | Sort-Object;
|
||||||
|
|
||||||
|
|
||||||
|
<#ADD COMMAS AND QUOTES AROUND LIST - Run this by highlighting and pressing F8 from the PowerShell ISE
|
||||||
|
|
||||||
|
|
||||||
|
$csv_res = "";
|
||||||
|
foreach($r in $res.Name){
|
||||||
|
if($csv_res -ne ""){
|
||||||
|
$csv_res += ",";
|
||||||
|
}
|
||||||
|
$csv_res += "'" + $r.Trim() + "'`n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$csv_res;
|
||||||
|
|
||||||
|
|
||||||
|
#>
|
Loading…
Reference in New Issue