More $Profile Tricks — Automatically Opening an Admin Window
May 20th, 2016 by Charlie Russel and tagged $Profile, PowerShell
I run as a limited user during my normal work, but I always keep one or more Admin windows open. These are logged in to my Domain Administrator account, running “As Administrator”. And I make sure I can tell that I’m running in that window by setting the colour scheme with a nice, dark red, background. Hard to miss! (I’ll show you how to do that in my next post. ) So, how do I do all that? Well, it starts by automatically opening a PowerShell window when I first log on, as described earlier here.
When that starts, I include code in my $Profile to first check how many PowerShell windows are already running, so I don’t start opening more if I don’t need them.
$PSH = Get-Process PowerShell
Simple, and let’s me get a count with $PSH.count. If this is the first PowerShell window I’ve opened ($PSH.count -lt 2) and this isn’t already an admin window, then I open an admin window. Let’s break this down: First, am I running as an Administrator?
# First, initialize $Admin to false $Admin = $False # Then, find out who we are... $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object system.security.principal.windowsprincipal($id) # Find out if we're running as admin (IsInRole). if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)){ $Admin = $True }
Now, a function to run an elevated window as the domain administrator.
Function Start-myAdmin () { # Get admin credentials $AdminCred = Get-Credential -UserName TreyResearch\Administrator ` -Message "Enter your password for the Administrator account: " # Start an elevated window, but with designated creds. Start-Process PowerShell.exe ` -Credential $AdminCred ` -ArgumentList "Start-Process PowerShell.exe -Verb RunAs" ` -NoNewWindow }
Good. So we’re going to want to start that admin window automatically when we first logon. We do that by checking the count of open PowerShell windows ($PSH.count)
# If this isn't already an Admin window, and we don't have lots of other PowerShell # windows open, then we start an Admin PowerShell window. if ( ! $Admin ) { cd $home if ($Psh.count -lt 2 ) { Start-myAdmin } }
Oh, and we’ll want an alias to be able to open up another one whenever we need it.
Set-Alias Admin -Value Start-myAdmin
Posted in Network Administration, PowerShell | Comments Off on More $Profile Tricks — Automatically Opening an Admin Window