Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
# Последняя команда
[Microsoft.PowerShell.Commands.HistoryInfo] $LastHistory
 
# Цвет фона
[System.ConsoleColor] $Background = $Host.UI.RawUI.BackgroundColor
 
# Функция проверяет, входит пользователь запустивший сеанс
# в группу "Администраторы", если да возвращает true, иначе false
function IsAdmin {
    $AdminGroup = "S-1-5-32-544"
    $CurrentGroup = ([Security.Principal.WindowsIdentity]::GetCurrent()).Groups
 
    if ($CurrentGroup -match $AdminGroup) {
        $true
    } else {
        $false
    }
}
 
# Функция сохраняет последнюю команду истории в переменную скрипта $LastHistory
# и возвращает true, иначе false
function Set-LastHistory {
    $LastCommand = Get-History -Count 1
 
    if ($LastCommand.Id -gt $Script:LastHistory.Id) {
        $Script:LastHistory = $LastCommand
        $true
    } else {
        $false
    }
}
 
# Функция вычисляет время исполнения последней команды и возвращает его в виде
# отформатированной строки
function Get-LastExecutionTime {
    $Diff = $Script:LastHistory.EndExecutionTime -
            $Script:LastHistory.StartExecutionTime
 
    if ($Diff.TotalMilliseconds -lt 1000) {
        "{0:000.00} ms" -f [math]::Round($Diff.TotalMilliseconds, 2)
    } elseif ($Diff.TotalMilliseconds -lt 60000) {
        "{0:00.00} s" -f [math]::Round($Diff.TotalMilliseconds / 1000, 2)
    } elseif ($Diff.TotalMilliseconds -lt 3600000) {
        "{0:00.00} m" -f [math]::Round($Diff.TotalMilliseconds / 60000, 2)
    } elseif ($Diff.TotalMilliseconds -ge 3600000) {
        "{0:00.00} h" -f [math]::Round($Diff.TotalMilliseconds / 3600000, 2)
    }
}
 
function Global:Prompt {
    # true - если есть последняя команда, иначе false
    $IsLastCommand = Set-LastHistory
 
    # Если есть последняя команда - получить время её исполнения
    if ($IsLastCommand) {
        $LastExecutionTime = Get-LastExecutionTime
    }
 
    # Запись в консоль времени исполнения последней команды
    if ($LastExecutionTime) {
        Write-Host
 
        # Запись в консоль номера последней команды
        if ($Script:LastHistory.Id -gt 0) {
            Write-Host "$([char]0xE0B6)" -F DarkBlue -B $Background -NoN
            Write-Host "$([char]0xE0B6)" -F Blue -B DarkBlue -NoN
            Write-Host $Script:LastHistory.Id -F White -B Blue -NoN
            Write-Host "$([char]0xE0B4)" -F Blue -B DarkBlue -NoN
        }
 
        Write-Host "$([char]0xE0B6)" -F DarkBlue -B DarkBlue -NoN
        Write-Host $LastExecutionTime -F White -B DarkBlue -NoN
        Write-Host "$([char]0xE0B4)" -F DarkBlue -B $Background
        Write-Host
    }
 
    # Запись в консоль значка администратора
    if (IsAdmin) {
        Write-Host "$([char]0xE0C7)" -F DarkRed -B $Background -NoN
        Write-Host "$([char]0xE0A2)" -F Yellow  -B DarkRed -NoN
        Write-Host "$([char]0xE0C6)" -F DarkRed -B $Background -NoN
    }
 
    # Запись в консоль метки дебаг режима
    if (Test-Path variable:\PSDebugContext) {
        Write-Host "$([char]0xE0C2)" -F Green -B $Background -NoN
        Write-Host "DBG" -F Black -B Green -NoN
        Write-Host "$([char]0xE0C0)" -F Green -B $Background -NoN
    }
 
    # Запись в консоль имени командной оболочки
    Write-Host "$([char]0xE0C5)" -F DarkBlue -B $Background -NoN
    Write-Host "PS" -F White -B DarkBlue -NoN
    Write-Host "$([char]0xE0B0)" -F DarkBlue -B Blue -NoN
 
    # Определение версии
    if ($PSVersionTable.PSVersion.Major -gt 5) {
        $PSVersion = $PSVersionTable.PSVersion.ToString()
    } else {
        $PSVersion = $PSVersionTable.PSVersion.ToString(2)
    }
 
    # Запись в консоль версии командной оболочки
    Write-Host $PSVersion -F White -B Blue -NoN
    Write-Host "$([char]0xE0B0)" -F Blue -B DarkCyan -NoN
 
    # Количество директорий отображаемых в пути
    $DirectoryCounter = 2
 
    # Определение текущего пути
    if (($PWD.Path.Split('\')).Count -le ($DirectoryCounter + 1)) {
        $PromptPath = $PWD.Path
    } else {
        $PromptPath = "$($PWD.Path[0.1]):\..\$(($PWD.Path.Split('\') |
            Select-Object -Last ($DirectoryCounter)) -join '\')"
    }
 
    # Запись в консоль текущего пути
    Write-Host $PromptPath -F White -B DarkCyan -NoN
    Write-Host "$([char]0xE0B0)" -F DarkCyan -B $Background -NoN
 
    # Запись в консоль приглашения ввода
    Write-Host -F White ("$([char]0xE0B1)" * ($NestedPromptLevel + 1)) -NoN
    ' '
}

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 21:18 27-12-2019 | Исправлено: iNNOKENTIY21, 08:36 29-12-2019
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru