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

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

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

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

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

iNNOKENTIY21



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

Код:
<#
    .SYNOPSIS
    Версия текущей операционной системы
    .DESCRIPTION
    Скрипт для получения информации о версии текущей операционной системы
    По умолчанию данные берутся, только из реестра
    С помощью параметров-переключателей подключаются другие источники информации
    .PARAMETER Kernel
    Переключатель для добавления информацию из WinAPI kernel32.dll GetVersion()
    .PARAMETER Environment
    Переключатель для добавления информацию из [System.Environment]::OSVersion
    .PARAMETER Cim
    Переключатель для добавления информацию из CimInstance Win32_OperatingSystem
    .PARAMETER Wmi
    Переключатель для добавления информацию из WmiObject Win32_OperatingSystem
    .OUTPUTS
    [PSCustomObject] с информацией об текущей операционной системе
    .NOTES
    Автор:          iNNOKENTIY21
    Версия:         1.0
    .EXAMPLE
    Get-OSVersion.ps1
    .EXAMPLE
    (Get-OSVersion.ps1).OSVersion
    .EXAMPLE
    (Get-OSVersion.ps1).OSInfoString
    .EXAMPLE
    Get-OSVersion.ps1 -Kernel -Environment -Cim -Wmi
    .EXAMPLE
    (Get-OSVersion.ps1 -Cim).OSVersionCim
    .EXAMPLE
    (Get-OSVersion.ps1 -Cim).OSVersionCim.Version
    .EXAMPLE
    (Get-OSVersion.ps1 -Wmi).OSVersionWMi.MUILanguages
#>
 
param (
    # Получать информацию из WinAPI kernel32.dll GetVersion()
    [switch] $Kernel,
 
    # Получать информацию из [System.Environment]::OSVersion
    [switch] $Environment,
 
    # Получать информацию из CimInstance Win32_OperatingSystem
    [switch] $Cim,
 
    # Получать информацию из WmiObject Win32_OperatingSystem
    [switch] $Wmi
)
 
# Путь в реестре с информацией об операционной системе
$Path = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
 
#($Path | Get-item).Property
# Свойства по указанному пути в реестре с информацией об операционной системе
$Properties = @(
    'BuildBranch'
    'BuildLab'
    'BuildLabEx'
    'CompositionEditionID'
    'CurrentBuild'
    'CurrentBuildNumber'
    'CurrentMajorVersionNumber'
    'CurrentMinorVersionNumber'
    'CurrentType'
    'CurrentVersion'
    'EditionID'
    'InstallationType'
    'PathName'
    'ProductName'
    'ReleaseId'
    'SoftwareType'
    'SystemRoot'
    'UBR'
)
 
# Объект для вывода
$Out = [PSCustomObject]@{}
 
# Наполнение объекта для вывода свойствами из реестра (Имя = Значение)
foreach ($Property in $Properties) {
    Add-Member `
        -InputObject $Out `
        -MemberType NoteProperty `
        -Name $Property `
        -Value (Get-ItemProperty -Path $Path -Name $Property).$Property
}
 
<# Добавление вычесляемых свойств #>
 
# Архетиктура операционной системы x32 или x64
Add-Member `
    -InputObject $Out `
    -MemberType NoteProperty `
    -Name OSArchitecture `
    -Value ([IntPtr]::Size * 8)
 
# Версия операционной системы приведенная к типу System.Version
Add-Member `
    -InputObject $Out `
    -MemberType NoteProperty `
    -Name OSVersion `
    -Value ([System.Version]::new(
        $Out.CurrentMajorVersionNumber,
        $Out.CurrentMinorVersionNumber,
        $Out.CurrentBuild,
        $Out.UBR))
 
# Информация о системе в одну строку
Add-Member `
    -InputObject $Out `
    -MemberType NoteProperty `
    -Name OSInfoString `
    -Value (@(
        $Out.CompositionEditionID
        $Out.InstallationType
        $Out.SoftwareType
        "NT-$($Out.CurrentVersion),"
        $Out.ProductName
        "x-$($Out.OSArchitecture),"
        $Out.ReleaseId
        "$($Out.BuildBranch -replace '_', ' '),"
        "v$($Out.OSVersion)"
        "($($Out.SystemRoot))"
    ) -join ' ')
 
# Информация о версии системы из WinAPI kernel32.dll GetVersion()
if ($Kernel) {
    # Добавление типа Класс OSVersion с методом из kernel32.dll GetVersion()
    if (!('OSVersion' -as [type])) {
        Add-Type -TypeDefinition @'
            using System;
            using System.Runtime.InteropServices;
 
            public class OSVersion
            {
                [DllImport("kernel32.dll")]
                public static extern uint GetVersion();
            }
'@
    }
 
    $OSVersion = [OSVersion]::GetVersion()
    $Os        = [System.BitConverter]::GetBytes($OSVersion)
    $Build     = [byte]$Os[2], [byte]$Os[3]
 
    Add-Member `
        -InputObject $Out `
        -MemberType NoteProperty `
        -Name OSVersionKernel `
        -Value ([System.Version]::new(
            $Os[0], $Os[1], [System.BitConverter]::ToInt16($Build, 0)
        ))
}
 
# Информация о системе из системной переменной [System.Environment]::OSVersion
if ($Environment) {
    Add-Member `
        -InputObject $Out `
        -MemberType NoteProperty `
        -Name OSVersionEnvironment `
        -Value (([System.Environment]::OSVersion))
}
 
# Информация о системе из CimInstance Win32_OperatingSystem
if ($Cim) {
    Add-Member `
        -InputObject $Out `
        -MemberType NoteProperty `
        -Name OSVersionCim `
        -Value (Get-CimInstance Win32_OperatingSystem)
}
 
# Информация о системе из WmiObject Win32_OperatingSystem
if ($Wmi) {
    Add-Member `
        -InputObject $Out `
        -MemberType NoteProperty `
        -Name OSVersionWmi `
        -Value (Get-WmiObject Win32_OperatingSystem)
}
 
# Вывод данных
$Out

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 15:17 21-04-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