Определить установленную версию PowerShell

В общем случае для сохранения символов, требующих 4 байта, вам необходимо обновить набор characher и сортировку для utf8mb4:

  1. таблицы / столбца базы данных: alter table convert to character set utf8mb4 collate utf8mb4_unicode_ci
  2. соединение с сервером базы данных ( см. )

В моей разработке enviromnt для # 2 Я предпочитаю устанавливать параметры в командной строке при запуске сервера: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci


btw, обратите внимание на поведение коннектора / J с SET NAMES 'utf8mb4':

Не выдавайте имена наборов запросов с помощью коннектора / J, так как драйвер не обнаружит, что набор символов изменился, и будет продолжать использовать набор символов, обнаруженный во время начальной настройки соединения.

blockquote>

И не следует устанавливать параметр characterEncoding в URL-адрес соединения, поскольку он переопределит настроенную серверную кодировку:

Чтобы переопределить автоматически обнаруженную кодировку на стороне клиента, используйте свойство characterEncoding в URL-адресе, используемом для подключения к серверу.

2461
задан MagicAndi 4 April 2018 в 12:21
поделиться

5 ответов

Используйте $ PSVersionTable.PSVersion , чтобы определить версию движка. Если переменная не существует, можно с уверенностью предположить, что это движок версии 1.0 .

Обратите внимание, что $ Host.Version и (Get-Host) .Version не являются надежными - они отражают только версия хоста, а не движок. PowerGUI, PowerShellPLUS и т. Д. - все приложения для хостинга, и они установят версию хоста, отражающую их продукт версия - что совершенно верно, но не то, что вы ищете.

PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1
3457
ответ дан 22 November 2019 в 19:51
поделиться

Чтобы проверить, установлен ли PowerShell, используйте:

HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )

Чтобы проверить, установлен ли RC2 или RTM, используйте:

HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-00301) -- For RC2
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-04309) -- For RTM

Источник: этот веб-сайт .

7
ответ дан 22 November 2019 в 19:51
поделиться

Вы можете посмотреть встроенную переменную $ psversiontable . Если его нет, у вас V1. Если он существует, он предоставит вам всю необходимую информацию.

1 >  $psversiontable

Name                           Value                                           
----                           -----                                           
CLRVersion                     2.0.50727.4927                                  
BuildVersion                   6.1.7600.16385                                  
PSVersion                      2.0                                             
WSManStackVersion              2.0                                             
PSCompatibleVersions           {1.0, 2.0}                                      
SerializationVersion           1.1.0.1                                         
PSRemotingProtocolVersion      2.1    
94
ответ дан 22 November 2019 в 19:51
поделиться

Чтобы определить, установлен ли PowerShell, вы можете проверить реестр на наличие

HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install

и

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3

и, если он существует, установить ли значение 1 (для установленного), как подробно описано в сообщении блога Проверьте, установлена ​​ли PowerShell и версия .

Чтобы определить версию установленной PowerShell, вы можете проверить разделы реестра

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion

и

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion

Чтобы определить версию PowerShell который устанавливается из сценария .ps1, вы можете использовать следующий однострочный файл, как подробно описано на PowerShell.com в Какой версии PowerShell я использую .

$isV2 = test-path variable:\psversiontable

На том же сайте также есть функция для возврата версия:

function Get-PSVersion {
    if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
95
ответ дан 22 November 2019 в 19:51
поделиться

Я бы использовал Get-Host или $ PSversionTable . Как указывает Энди Шнайдер, $ PSversionTable не работает в версии 1; Он был введен в версии 2.

get-host

Name             : ConsoleHost
Version          : 2.0
InstanceId       : d730016e-2875-4b57-9cd6-d32c8b71e18a
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-GB
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

$PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4200
BuildVersion                   6.0.6002.18111
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1
425
ответ дан 22 November 2019 в 19:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: