Хотите такую же строчку приглашения себе? 🙂
Выводится порядковый номер каждой команды, уровень вложенности оболочек и текущий путь. Причем средняя часть длинных путей заменяется многоточием, оставляя лишь диск или имя компьютера, и последнюю папку в пути. Ну и если оболочка запущена с административными привилегиями, то приглашение выводится красным цветом.
Нижеследующий код можно добавить себе в файл $profile и тогда он будет активироваться автоматически при каждом запуске PowerShell.
$IsElevated=$false foreach ($sid in [Security.Principal.WindowsIdentity]::GetCurrent().Groups) { if ($sid.Translate([Security.Principal.SecurityIdentifier]).IsWellKnown([Security.Principal.WellKnownSidType]::BuiltinAdministratorsSid)) { $IsElevated=$true } } function prompt { [Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath $path = (Get-Location).path -replace '^(.*?[^:]:\\).+(\\.+?)$',('$1'+[char]8230+'$2') -replace '^.+?::' -replace '^(\\\\.+?\\).+(\\.+?)$',('$1'+[char]8230+'$2') $id = ([int](Get-History -Count 1).Id) + 1 $prefix = "[PS <$id> " if ($NestedPromptLevel){$prefix += "($NestedPromptLevel) "} if ($isElevated) {$Color = "Red"} else {$Color = "White"} write-host $prefix -ForegroundColor $Color -NonewLine write-host ($path) -foregroundcolor "Gray" -NonewLine write-host "]" -ForegroundColor $Color -NonewLine " " }
Пользуйтесь на здоровье 🙂
14.5.2009 в 13:56
Это чего, после моего вопроса про кол-во команд?
14.5.2009 в 13:57
Именно 🙂 Впрочем я давно хотел свой prompt выложить, а тут повод 🙂
14.5.2009 в 15:05
А я у себя заряд батарей еще вывожу 🙂
вот этим кодом:
$charge = Get-WMIObject Win32_Battery -property EstimatedChargeRemaining
switch ($charge.EstimatedChargeRemaining) {
{ $_ -lt 25 } { $color = ‘red’; break }
{ $_ -lt 50 } { $color = ‘red’; break }
default { $color = ‘white’ }
}
14.5.2009 в 15:35
Александр, здорово! 🙂 Только наверное в одном из случаев должен быть не red, а dark red? 😉
14.5.2009 в 19:45
А зачем проставляется
[Environment]::CurrentDirectory ?
15.5.2009 в 8:36
Спасибо 🙂
15.5.2009 в 9:02
2 T: Потому что по умолчанию, текущий каталог для приложения (PowerShell.exe), не соответствует той папке в которую вы перешли с помощью cd (set-location) в PowerShell. Это связано с тем, что система не позволяет использовать в качестве путей для приложений например hklm:\… 😉 Но по возможности (когда мы находимся в файловой системе), бывает полезно их синхронизировать, так как многие внешние утилиты, когда вы их вызываете из PowerShell, используют в качестве текущего пути именно каталог программы. Надеюсь понятно объяснил 🙂
15.5.2009 в 9:38
А у меня почему-то вместо многоточия … проставляется двоеточие : 😦
15.5.2009 в 9:54
2 SegrS: я в первом replace поменял (‘$1’+[char]8230+’$2’) на (‘$1…$2’), но чую есть вариант лучше 🙂
15.5.2009 в 10:04
SergS, extray: Я подозреваю что у вас проблемы из за того что вы используете не TrueType шрифт в консоли, и соответственно у него проблемы с unicode символами. Попробуйте сменить на Lucida Console или Consolas.
15.5.2009 в 10:05
2 Xaegr: да, не успел отписаться раньше, уже нашел. именно это и было, спасибо. 🙂
15.5.2009 в 10:12
2 Xaegr: Простите, а где это настраивается. У меня Vista
15.5.2009 в 10:14
SergS: Правой кнопкой по заголовку командной строки, затем Свойства (для текущего окна) или Умолчания (дле всех новых окон), и там закладка Шрифт.
15.5.2009 в 10:18
2 Xaegr: Спасибо, все получилось 🙂
1.6.2009 в 10:34
[…] про приглашение я писал тут. Комментариев […]