102 lines
3.6 KiB
PowerShell
102 lines
3.6 KiB
PowerShell
# Put this in the location of $PROFILE. For PowerShell 5+ this is either
|
|
# C:\Users\USERNAME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
|
|
# or
|
|
# C:\Users\USERNAME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
|
|
|
|
function Prompt {
|
|
if ($IsWindows -or ($env:OS -eq "Windows_NT")) {
|
|
[string]$monoPrompt = ""
|
|
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
|
|
if ($currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
|
$monoPrompt = $env:USERNAME + "@" + $env:COMPUTERNAME.ToLower() + "# "
|
|
} else {
|
|
$monoPrompt = $env:USERNAME + "@" + $env:COMPUTERNAME.ToLower() + "> "
|
|
}
|
|
if ($PSVersionTable.PSVersion -gt [System.Version]"6.0") {
|
|
"`e[1m" + $monoPrompt + "`e[0m"
|
|
} else {
|
|
$monoPrompt
|
|
}
|
|
} elseif ($IsLinux) {
|
|
"`e[1m" + $(id -un) + "@" + $(hostname -s) + "> `e[0m"
|
|
} else {
|
|
"PS> "
|
|
}
|
|
}
|
|
|
|
function ADUserInfo {
|
|
Param (
|
|
[Parameter(Mandatory=$true)] [string]$User
|
|
)
|
|
Import-Module ActiveDirectory -ErrorAction Stop
|
|
$ADPropertiesCommon = @(
|
|
'SamAccountName'
|
|
'UserPrincipalName'
|
|
'DisplayName'
|
|
'Enabled'
|
|
'PasswordExpired'
|
|
'LockedOut'
|
|
'CannotChangePassword'
|
|
'PasswordNeverExpires'
|
|
'GivenName'
|
|
'Surname'
|
|
'DistinguishedName'
|
|
'EmployeeID'
|
|
'PersonalPager'
|
|
'Title'
|
|
'Division'
|
|
'Department'
|
|
'Created'
|
|
'Modified'
|
|
'PasswordLastSet'
|
|
)
|
|
$ADPropertiesGetOnly = @(
|
|
'msDS-UserPasswordExpiryTimeComputed'
|
|
)
|
|
$ADPropertiesPrintOnly = @(
|
|
@{Name="PasswordExpiresDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}
|
|
)
|
|
$ADPropertiesGet = $ADPropertiesCommon + $ADPropertiesGetOnly
|
|
$ADPropertiesPrint = $ADPropertiesCommon + $ADPropertiesPrintOnly
|
|
Get-ADUser -Properties $ADPropertiesGet -Identity $User | Select-Object -Property $ADPropertiesPrint
|
|
}
|
|
|
|
Set-Alias -Name json -Value ConvertTo-Json
|
|
Set-PSReadlineOption -BellStyle None
|
|
Set-PSReadlineOption -EditMode Emacs
|
|
Set-PSReadlineKeyHandler -Key Tab -Function Complete
|
|
Set-PSReadLineKeyHandler -Key UpArrow -ScriptBlock {
|
|
[Microsoft.PowerShell.PSConsoleReadLine]::HistorySearchBackward()
|
|
[Microsoft.PowerShell.PSConsoleReadLine]::EndOfLine()
|
|
}
|
|
Set-PSReadLineKeyHandler -Key DownArrow -ScriptBlock {
|
|
[Microsoft.PowerShell.PSConsoleReadLine]::HistorySearchForward()
|
|
[Microsoft.PowerShell.PSConsoleReadLine]::EndOfLine()
|
|
}
|
|
Set-PSReadLineKeyHandler -Chord Shift+Spacebar -Function SelfInsert
|
|
Set-PSReadLineKeyHandler -Chord Ctrl+LeftArrow -Function BackwardWord
|
|
Set-PSReadLineKeyHandler -Chord Ctrl+RightArrow -Function ForwardWord
|
|
Set-PSReadLineKeyHandler -Chord Ctrl+Backspace -Function BackwardKillWord
|
|
Set-PSReadLineKeyHandler -Chord Ctrl+Delete -Function KillWord
|
|
|
|
if ($PSVersionTable.PSVersion -ge [System.Version]"7.2") {
|
|
$AnsiReset = "`e[0m"
|
|
Set-PSReadLineOption -Colors @{
|
|
Default = $AnsiReset;
|
|
Command = $AnsiReset;
|
|
Comment = $AnsiReset;
|
|
ContinuationPrompt = $AnsiReset;
|
|
Emphasis = $AnsiReset;
|
|
Error = $AnsiReset;
|
|
InlinePrediction = $AnsiReset;
|
|
Keyword = $AnsiReset;
|
|
Member = $AnsiReset;
|
|
Number = $AnsiReset;
|
|
Operator = $AnsiReset;
|
|
Parameter = $AnsiReset;
|
|
Selection = $AnsiReset;
|
|
String = $AnsiReset;
|
|
Type = $AnsiReset;
|
|
Variable = $AnsiReset;
|
|
}
|
|
}
|