Как узнать хэш (контрольную сумму) файла в Windows PowerShell. Powershell как посмотреть версию


Как узнать версию PowerShell | Заметки сисадмина

Данная статья моя первая шпаргалка по Powershell. Изначально я хотел запихнуть всё, что я понаписывал на PowerShell в одну, но когда начал копировать скрипты — статья превратилась в нечитаемую простыню. Поэтому решил разбить на несколько статей, от простого к сложному (для меня). Для знающих — это очевидные вещи, но может кому и пригодиться. В самом начале разберёмся, что у нас за версия Powershell-а, отформатируем телефонный номер в читаемый формат, а также пинганём IP диапазон локальной сети. Принимается конструктивная критика и советы по улучшению скриптов.

Как узнать версию Powershell:

# Вариант 1 $PSVersionTable.PSVersion # Вариант 2 $host.version

# Вариант 1

$PSVersionTable.PSVersion

 

# Вариант 2

$host.version

Результат:

PS C:\WINDOWS\system32> $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 5 1 15063 138 PS C:\WINDOWS\system32> $host.version Major Minor Build Revision ----- ----- ----- -------- 5 1 15063 138

PS C:\WINDOWS\system32> $PSVersionTable.PSVersion

 

Major  Minor  Build  Revision

-----  -----  -----  --------

5      1      15063  138    

 

 

 

PS C:\WINDOWS\system32> $host.version

 

Major  Minor  Build  Revision

-----  -----  -----  --------

5      1      15063  138

Отформатируем телефонный номер:

##################################################################### # С помощью регулярных выражений и PowerShell, # приведём не читаемый телефонный номер xxxxxxxxxxxx # к читаемому виду +xxx (xx) xxx-xx-xx # Работает для белорусских и российских номеров # Очень легко переделывается для любых других # ##################################################################### [string] $tel = Read-Host "Введите номер телефона в международном формате, например 375296843234" if ( $tel -match "^375") { $tel -replace "^(...)(..)(...)(..)(..)", '+$1 ($2) $3-$4-$5' } elseif ( $tel -match "^7") { $tel -replace "^(.)(...)(...)(..)(..)", '+$1 ($2) $3-$4-$5' } else { $tel= "$tel - Неверный номер"; $tel }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#####################################################################

#    С помощью регулярных выражений и PowerShell,

#       приведём не читаемый телефонный номер xxxxxxxxxxxx

#          к читаемому виду +xxx (xx) xxx-xx-xx

#   Работает для белорусских и российских номеров

#       Очень легко переделывается для любых других

#

#####################################################################

 

[string] $tel = Read-Host "Введите номер телефона в международном формате, например 375296843234"

if

( $tel -match "^375")

    {

        $tel -replace "^(...)(..)(...)(..)(..)", '+$1 ($2) $3-$4-$5'

    }

        elseif

        ( $tel -match "^7")

        {

        $tel -replace "^(.)(...)(...)(..)(..)", '+$1 ($2) $3-$4-$5'

        }

    else {

    $tel= "$tel - Неверный номер"; $tel

    }

Результат:

Введите номер телефона в международном формате, например 375296843234: 375296843234 +375 (29) 684-32-34

Введите номер телефона в международном формате, например 375296843234: 375296843234

+375 (29) 684-32-34

Пингуем IP диапазон:

################################################################################# # # С помощью PowerShell пингуем подсеть или некий IP диапазон. # Сперва вводим маску подсети (первые 3 октета IP адреса с ТОЧКОЙ!!! на конце) # Потом вводим 4 октет адреса с которого начинаем пинг # и 4 октет, которым завершаем его # ################################################################################## function IPNetEchoScanner { [string] $net = Read-Host "Введите маску сети, например 192.168.1." [int]$StartIP = Read-Host "Введите начальный IP" [int]$EndIP = Read-Host "Ведите конечный IP" for ($i = $StartIP; $i -le $EndIP; $i++) { [string]$IP = $net + $i # Убираем переход на новую строку и добавляем табуляцию write-host $IP `t -NoNewline $result = Test-Connection -ComputerName $IP -Count 1 -Quiet if ($result -eq $false) { Write-Host $result -ForegroundColor Red } else { Write-Host $result -ForegroundColor Green } } } IPNetEchoScanner

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

#################################################################################

#

#    С помощью PowerShell пингуем подсеть или некий IP диапазон.

#      Сперва вводим маску подсети (первые 3 октета IP адреса с ТОЧКОЙ!!! на конце)

#   Потом вводим 4 октет адреса с которого начинаем пинг

#       и 4 октет, которым завершаем его

#

##################################################################################

function IPNetEchoScanner

{

    [string] $net = Read-Host "Введите маску сети, например 192.168.1."

    [int]$StartIP = Read-Host "Введите начальный IP"

    [int]$EndIP = Read-Host "Ведите конечный IP"

    for ($i = $StartIP; $i -le $EndIP; $i++)

    {

        [string]$IP = $net + $i

        # Убираем переход на новую строку и добавляем табуляцию

        write-host $IP `t -NoNewline

        $result = Test-Connection -ComputerName $IP -Count 1 -Quiet

            if ($result -eq $false)

        {

                Write-Host $result -ForegroundColor Red

        }

            else

        {

                Write-Host $result -ForegroundColor Green

        }

 

    }

 

}

IPNetEchoScanner

Результат:

PS C:\WINDOWS\system32> IPNetEchoScanner Введите маску сети, например 192.168.1.: 192.168.10. Введите начальный IP: 123 Ведите конечный IP: 126 192.168.10.123 False 192.168.10.124 True 192.168.10.125 True 192.168.10.126 False

PS C:\WINDOWS\system32> IPNetEchoScanner

Введите маску сети, например 192.168.1.:

192.168.10.

Введите начальный IP: 123

Ведите конечный IP: 126

192.168.10.123 False

192.168.10.124 True

192.168.10.125 True

192.168.10.126 False

 

kio.by

Как найти версию Windows из командной строки PowerShell?

Как найти версию Windows, которую я использую?

Я использую PowerShell 2.0 и пытаюсь:

PS C:\> ver The term 'ver' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify tha t the path is correct and try again. At line:1 char:4 + ver <<<< + CategoryInfo : ObjectNotFound: (ver:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

Как мне это сделать?

73

2017-09-07 07:20

источник

Ответы:

Поскольку у вас есть доступ к библиотеке .NET, вы можете получить доступ к OSVersion собственности System.Environment класс, чтобы получить эту информацию. Для номера версии есть Version имущество.

Например,

PS C:\> [System.Environment]::OSVersion.Version Major Minor Build Revision ----- ----- ----- -------- 6 1 7601 65536

Подробную информацию о версиях Windows можно найти Вот ,

103

2017-09-07 07:37

  1. Чтобы получить номер версии Windows, как отмечает Джефф в своем ответ , используйте:

    [Environment]::OSVersion

    Стоит отметить, что результат имеет тип [System.Version], поэтому можно проверить, скажем, Windows 7 / Windows Server 2008 R2 и более поздние версии

    [Environment]::OSVersion.Version -ge (new-object 'Version' 6,1)

    Однако это не скажет вам, что это клиентская или серверная Windows, а также имя версии.

  2. Использовать WMI Win32_OperatingSystem class (всегда один экземпляр), например:

    (Get-WmiObject -class Win32_OperatingSystem).Caption

    вернет что-то вроде

    Стандарт Microsoft Windows Server 2008

85

2018-06-13 09:56

Get-WmiObject -Class Win32_OperatingSystem | ForEach-Object -MemberName Caption

Или игра в гольф

gwmi win32_operatingsystem | % caption

результат

Microsoft Windows 7 Ultimate

20

2018-05-13 02:57

Это даст вам полная версия Windows (включая номер версии / сборки)  в отличие от всех вышеперечисленных решений:

(Get-ItemProperty -Path c:\windows\system32\hal.dll).VersionInfo.FileVersion

Результат:

10.0.10240.16392 (th2_st1.150716-1608)

13

2017-07-28 09:54

К сожалению, большинство других ответов не предоставляют информацию, относящуюся к Windows 10.

Windows 10 имеет версии  самостоятельно: 1507, 1511, 1607, 1703 и т.д. , Это то, что winver показывает.

Powershell: (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId Command prompt (CMD.EXE): Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId

Смотрите также связанный с вопросом о суперпользователе ,

Что касается других версий Windows, используйте systeminfo, Оболочка Powershell:

PS C:\> systeminfo /fo csv | ConvertFrom-Csv | select OS*, System*, Hotfix* | Format-List OS Name : Microsoft Windows 7 Enterprise OS Version : 6.1.7601 Service Pack 1 Build 7601 OS Manufacturer : Microsoft Corporation OS Configuration : Standalone Workstation OS Build Type : Multiprocessor Free System Type : x64-based PC System Locale : ru;Russian Hotfix(s) : 274 Hotfix(s) Installed.,[01]: KB2849697,[02]: KB2849697,[03]:...

12

2018-04-27 21:13

Я уточняю одну из ответы

Я достиг этого вопроса, пытаясь сопоставить результат с winver.exe:

Version 1607 (OS Build 14393.351) 

Мне удалось извлечь строку сборки:

,((Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name BuildLabEx).BuildLabEx -split '\.') | % { $_[0..1] -join '.' }

Результат: 14393.351

обновленный : Вот немного упрощенный скрипт с использованием regex

(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").BuildLabEx -match '^[0-9]+\.[0-9]+' | % { $matches.Values }

6

2017-10-31 20:52

Если вы хотите различать Windows 8.1 (6.3.9600) и Windows 8 (6.2.9200), используйте

(Get-CimInstance Win32_OperatingSystem).Version

чтобы получить правильную версию. [Environment]::OSVersion не работает должным образом в Windows 8.1 (он возвращает версию Windows 8).

5

2018-05-27 09:39

Since PowerShell 5:

Get-ComputerInfo Get-ComputerInfo -Property Windows*

I think this command pretty much tries the 1001 different ways so far discovered to collect system information...

4

2018-05-25 14:43

As MoonStom says, [Environment]::OSVersion doesn't work properly on an upgraded Windows 8.1 (it returns a Windows 8 version): link.

If you want to differentiate between Windows 8.1 (6.3.9600) and Windows 8 (6.2.9200), you can use (Get-CimInstance Win32_OperatingSystem).Version to get the proper version. However this doesn't work in PowerShell 2. So use this:

$version = $null try { $version = (Get-CimInstance Win32_OperatingSystem).Version } catch { $version = [System.Environment]::OSVersion.Version | % {"{0}.{1}.{2}" -f $_.Major,$_.Minor,$_.Build} }

3

2017-09-23 19:37

programmerz.ru

Как узнать какая версия Lync установлена | blog.eaglenn.ru

Зачем нужно знать версию Lync сервера

Компания Microsoft периодически выпускает обновления для Lync сервера, и основным требованием к обновлению является соответствие версионности. Кроме этого к версии Lync сервера могут быть чувствительны сторонние приложения.

Три способа узнать версию Lync сервера

И так, существует три способа узнать версию Lync сервера:

  • PowerShell
  • Используя средство LyncServerUpdateInstaller.exe
  • Используя Панель управления\Программы и компоненты

PowerShell

Существует родная однострочная команда в Lync сервере . Казалось бы, можно использовать ее, но она вернет только начальную информацию. Запустите Lync Server Management Shell и введите команду Get-CsServerVersion

Как мы видим вывод этой команды имеет скудные данные. Для получения более подробной информации предлагаю воспользоваться информацией полученной из WMI. Для этого мы так же будем использовать PowerShell и консоль Lync Server Management Shell, но введем следующую команду:

Get-WmiObject –query ‘select * from win32_product’ | where {$_.name –like “Microsoft Lync Server*”} | ft Name, Version –AutoSize

Итогом работы приведенного выше запроса будет вывод всех связанных с Lync сервером компонентов, инструментов, Resource Kit, Best Practices Analyzer.

LyncServerUpdateInstaller.exe

Так же можно использовать инструмент обновления LyncServerUpdateInstaller.exe. Итогом ее запуска будет вывод информации, какие версии компонентов установлены и какие должны быть обновлены. Имейте ввиду, что для корректной работы утилиты на обновляемом сервере необходим доступ в интернетики либо если вы используете offline режим вам необходимо скачать вручную требуемые обновления.

Программы и компоненты

Откройте панель управления, программы и компоненты. В строке поиска введите Lync, в столбце справа вы также сможете получить версию всех установленных на данном сервере компонентов, относящихся к Lync серверу.

blog.eaglenn.ru

Как узнать хэш файла в Windows PowerShell

08.09.2016&nbsp windows | для начинающих

Хэш или контрольная сумма файла — короткое уникальное значение, вычисляемое из содержимого файла и обычно использующееся для проверки целостности и соответствия (совпадения) файлов при загрузке, особенно если речь идет о больших файлах (образы системы и подобные), которые могут быть скачены с ошибками или есть подозрения о том, что файл был подменен вредоносным ПО.

На сайтах загрузок часто бывает представлена контрольная сумма, вычисленная по алгоритмам MD5, SHA256 и другим, позволяющая сверить загруженный файл с файлом, выложенным разработчиком. Для вычисления контрольных сумм файлов можно использовать сторонние программы, но есть способ сделать это и стандартными средствами Windows 10, 8 и Windows 7 (требуется версия PowerShell 4.0 и выше) — с помощью PowerShell или командной строки, что и будет продемонстрировано в инструкции.

Получение контрольной суммы файла средствами Windows

Для начала потребуется запустить Windows PowerShell: проще всего использовать поиск в панели задач Windows 10 или меню Пуск Windows 7 для этого.

Команда, позволяющая вычислить хэш для файла в PowerShell — Get-FileHash, а чтобы использовать ее для вычисления контрольной суммы достаточно ввести ее со следующими параметрами (в примере вычисляется хэш для образа ISO Windows 10 из папки VM на диске C):

Get-FileHash C:\VM\Win10_1607_Russian_x64.iso| Format-List

При использовании команды в таком виде, хэш вычисляется по алгоритму SHA256, но поддерживаются и другие варианты, задать которые можно с помощью параметра -Algorithm, например, для вычисления контрольной суммы MD5 команда будет выглядеть как в примере ниже

Get-FileHash C:\VM\Win10_1607_Russian_x64.iso -Algorithm MD5 | Format-List

При этом поддерживаются следующие значение для алгоритмов вычисления контрольной суммы в Windows PowerShell

  • SHA256 (по умолчанию)
  • MD5
  • SHA1
  • SHA384
  • SHA512
  • MACTripleDES
  • RIPEMD160

Подробное описание синтаксиса команды Get-FileHash доступно также на официальном сайте https://technet.microsoft.com/en-us/library/dn520872(v=wps.650).aspx

Получение хэша файла в командной строке с помощью CertUtil

В Windows присутствует встроенная утилита CertUtil для работы с сертификатами, которая, помимо прочего, умеет высчитывать контрольную сумму файлов по алгоритмам:

  • MD2, MD4, MD5
  • SHA1, SHA256, SHA384, SHA512

Для использования утилиты достаточно запустить командную строку Windows 10, 8 или Windows 7 и ввести команду в формате:

certutil -hashfile путь_к_файлу алгоритм

Пример получения хэша MD5 для файла показан на скриншоте ниже.

Дополнительно: на случай, если вам требуются сторонние программы для вычисления хэшей файлов в Windows, можно обратить внимание на SlavaSoft HashCalc.

Если же требуется вычислить контрольную сумму в Windows XP или в Windows 7 без PowerShell 4 (и возможности его установить), вы можете использовать утилиту командной строки Microsoft File Checksum Integrity Verifier, доступную для загрузки на официальном сайте https://www.microsoft.com/en-us/download/details.aspx?id=11533 (формат команды для использования утилиты: fciv.exe путь_к_файлу — результат будет MD5. Также можно вычислить хэш SHA1: fciv.exe -sha1 путь_к_файлу)

А вдруг и это будет интересно:

remontka.pro

Версия Powershell в Windows Server 2008 r2

Версия Powershell в Windows Server 2008 r2

UPD Метод опередления версии найденный мной оказался неверным. Вот правильный метод

Попытался узнать версию Powershell в свежеустановленном Windows Server 2008 R2 методом найденном в Интернет.

Powershell Version

Безусловно радует то, что это вторая версия Powershell. Это вам и красивый отладчик, и Remotings, и многое другое. Но не могу не придраться к тому, что в финальной версии так и не убрали признак CTP выпуска.

Понравилось это:

Нравится Загрузка...

Похожее

trukhanov.wordpress.com