Хотите такую же строчку приглашения себе?
Выводится порядковый номер каждой команды, уровень вложенности оболочек и текущий путь. Причем средняя часть длинных путей заменяется многоточием, оставляя лишь диск или имя компьютера, и последнюю папку в пути. Ну и если оболочка запущена с административными привилегиями, то приглашение выводится красным цветом.
Нижеследующий код можно добавить себе в файл $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 " " }
Пользуйтесь на здоровье









Это чего, после моего вопроса про кол-во команд?
Комментарий от abigor — 14.5.2009 @ 13:56
Именно
Впрочем я давно хотел свой prompt выложить, а тут повод
Комментарий от Xaegr — 14.5.2009 @ 13:57
А я у себя заряд батарей еще вывожу
вот этим кодом:
$charge = Get-WMIObject Win32_Battery -property EstimatedChargeRemaining
switch ($charge.EstimatedChargeRemaining) {
{ $_ -lt 25 } { $color = ‘red’; break }
{ $_ -lt 50 } { $color = ‘red’; break }
default { $color = ‘white’ }
}
Комментарий от Alexandr Romanov — 14.5.2009 @ 15:05
Александр, здорово!
Только наверное в одном из случаев должен быть не red, а dark red?
Комментарий от Xaegr — 14.5.2009 @ 15:35
А зачем проставляется
[Environment]::CurrentDirectory ?
Комментарий от T — 14.5.2009 @ 19:45
Спасибо
Комментарий от LeniVetc — 15.5.2009 @ 8:36
2 T: Потому что по умолчанию, текущий каталог для приложения (PowerShell.exe), не соответствует той папке в которую вы перешли с помощью cd (set-location) в PowerShell. Это связано с тем, что система не позволяет использовать в качестве путей для приложений например hklm:\…
Но по возможности (когда мы находимся в файловой системе), бывает полезно их синхронизировать, так как многие внешние утилиты, когда вы их вызываете из PowerShell, используют в качестве текущего пути именно каталог программы. Надеюсь понятно объяснил
Комментарий от Xaegr — 15.5.2009 @ 9:02
А у меня почему-то вместо многоточия … проставляется двоеточие :
Комментарий от SergS — 15.5.2009 @ 9:38
2 SegrS: я в первом replace поменял (‘$1′+[char]8230+’$2′) на (‘$1…$2′), но чую есть вариант лучше
Комментарий от exray — 15.5.2009 @ 9:54
SergS, extray: Я подозреваю что у вас проблемы из за того что вы используете не TrueType шрифт в консоли, и соответственно у него проблемы с unicode символами. Попробуйте сменить на Lucida Console или Consolas.
Комментарий от Xaegr — 15.5.2009 @ 10:04
2 Xaegr: да, не успел отписаться раньше, уже нашел. именно это и было, спасибо.
Комментарий от exray — 15.5.2009 @ 10:05
2 Xaegr: Простите, а где это настраивается. У меня Vista
Комментарий от SergS — 15.5.2009 @ 10:12
SergS: Правой кнопкой по заголовку командной строки, затем Свойства (для текущего окна) или Умолчания (дле всех новых окон), и там закладка Шрифт.
Комментарий от Xaegr — 15.5.2009 @ 10:14
2 Xaegr: Спасибо, все получилось
Комментарий от SergS — 15.5.2009 @ 10:18
[...] про приглашение я писал тут. Комментариев [...]
Уведомление от Делимся своими профилями! « PowerShell и другие скрипты — 1.6.2009 @ 10:34