|
|
|
#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-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'
|
|
|
|
}
|