Я хочу изменить заголовок окна PowerShell на командную строку текущего выполняемого внутри него процесса, как это делает CMD.EXE.
Могу ли я сделать это в PowerShell?
Есть ли какая-то функция вроде prompt
который вызывается, когда я выполняю команду в PowerSHell?
Вы хотите это для небольшого избранного числа исполняемых файлов? Или все бывшие?
Один взлом для выбранного количества исполняемых файлов будет делать
function cmd
{
$title = $host.UI.RawUI.WindowTitle
$host.UI.RawUI.WindowTitle = 'cmd.exe ' + ($args -join " ")
cmd.exe $args
$host.UI.RawUI.WindowTitle = $title
}
Затем просто запустите cd c: cmd / c dir / s
И посмотрите, как изменилось название
И для всех команд
Get-Command -CommandType Application | where {$_.Name -match '.exe$'} | %{
$f = @'
function {0}
{{
$title = $host.UI.RawUI.WindowTitle
$host.UI.RawUI.WindowTitle = '{0} ' + ($args -join " ")
{0}.exe $args
$host.UI.RawUI.WindowTitle = $title
}}
'@ -f ($_ -replace '.exe', '')
Invoke-Expression $f
}
А затем попробуйте ping 127.0.0.1
Его хакерский, YMMV
Да, есть, это моя функция для подсказки, она помещает в подсказку последнюю часть фактического пути. Также установите заголовок окна, и когда вы запустите его от имени администратора, измените фон и добавьте Admin: в заголовок.
$FirstRun=1
function prompt{
$shortpath = split-path (Get-Location) -leaf;
$id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$p = New-Object System.Security.Principal.WindowsPrincipal($id)
if
($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
{
$host.UI.RawUI.WindowTitle = "ADMIN:$shortpath"
if($FirstRun){$host.UI.RawUI.BackgroundColor = "Black"; cls; $global:FirstRun = 0;}
}
else
{$host.UI.RawUI.WindowTitle = $shortpath}
$(if (test-path variable:/PSDebugContext)
{ '[DBG]: ' }
else { '' }) + 'PS ' + $($shortpath) + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> ';
}
Поместите это в свой профиль, помните, что любой профиль доступен напрямую с помощью переменной профиля: $ profile.CurrentUserCurrentHost, $ profile.CurrentuserAllhost .... и т. Д.
Это определенно возможно, хотя вам придется кодировать это самостоятельно. В этой статье TechNet описывается, как изменить строку заголовка исполняемого окна.