#region keybindings Set-PSReadlineKeyHandler -Key Tab -Function Complete Set-PSReadlineKeyHandler -Key Ctrl+d -Function ViExit #endregion keybindings #region prompt dependencies #set part of the prompt beforehand to optimize the prompt function #depending on elevated permissions change the delimiter $identity = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent() if($identity.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { $delimiter = '#' } else { $delimiter = '$' } $username = $env:USERNAME.ToLower() $computername = $env:COMPUTERNAME.ToLower() #endregion prompt dependencies function prompt { #shorten path with tilde if possible #uses .Replace() to prevent regex $cwd = (Get-Location).Path.Replace($HOME,'~') '[{0}@{1} {2}]{3} ' -f $username,$computername,$cwd,$delimiter } function Get-BADUser { param ( [Parameter(Mandatory=$true, Position=0)] [string] $SearchTerm, [string] $Server = $env:USERDNSDOMAIN+':3268' ) $filter = 'UserPrincipalName -like "*{0}*" -or Name -like "*{0}*"' -f $SearchTerm Get-ADUser -Filter $filter -Server $Server @args } function Get-BADGroup { param ( [Parameter(Mandatory=$true, Position=0)] [string] $SearchTerm, [string[]] $Properties = @('Description','ManagedBy'), [string] $Server = $env:USERDNSDOMAIN+':3268' ) $filter = 'Name -like "*{0}*" -or Description -like "*{0}*"' -f $SearchTerm Get-ADGroup -Filter $filter -Properties $Properties -Server $Server @args } function Get-BADComputer { param ( [Parameter(Mandatory=$true, Position=0)] [string] $SearchTerm, [string[]] $Properties = @('Description','ManagedBy'), [string] $Server = $env:USERDNSDOMAIN+':3268' ) $filter = 'Name -like "*{0}*" -or Description -like "*{0}*"' -f $SearchTerm Get-ADComputer -Filter $filter -Properties $Properties -Server $Server @args } function Get-BADPrincipalGroupMembership { param ( [Parameter(ValueFromPipeline)] [Microsoft.ActiveDirectory.Management.ADAccount] $ADObject ) process { write-host $ADObject $server = $ADObject.DistinguishedName.Split(',DC=')[-2,-1] -join '.' $ADObject | Get-ADPrincipalGroupMembership -Server $server } } function Get-Feierabend { param ( [Parameter(Position = 0)] [datetime] $Begin, [Parameter(Position = 1)] [datetime] $PauseStart, [Parameter(Position = 2)] [datetime] $PauseEnd, [Parameter(Position = 3)] [single] $Hours = 6.5, [Parameter(Position = 4)] [single] $Minutes = 30 ) $Begin.AddHours($Hours).AddMinutes($Minutes).Add($PauseEnd - $PauseStart) } function fsh { param ( [string]$ComputerName ) $host.UI.RawUI.WindowTitle = $ComputerName Enter-PSSession @PSBoundParameters @args } function watch { param ( [int]$n = 2, [Parameter(Mandatory, Position = 0)] $ScriptBlock ) while ($true) { $o = Invoke-Command -ScriptBlock $ScriptBlock Clear-Host 'Watching {'+$ScriptBlock+'} '+(Get-Date) '' $o Start-Sleep -Seconds $n } } #check for old version if($PSVersionTable.PSVersion.Major -le 5){ Write-Host -ForegroundColor Red 'start pwsh instead of powershell' }