1) Как установить PowerShell V4?
.NET Framework 4.5 (В состав Windows 8.1 и Windows Server 2012,Windows Server 2012 R2 входит .NET Framework 4.5. Поэтому установка этого программного обеспечения в указанных операционных системах не требуется.) должен быть установлен перед установкой Windows Management Framework 4.0 (WMF).
PowerShell является частью пакета Windows Management Framework 4.0 (WMF) и может быть скачан по следующим ссылкам:
- Windows 7 SP1
- x64: Windows6.1-KB2819745-x64-MultiPkg.msu
- x86: Windows6.1-KB2819745-x86-MultiPkg.msu
- Windows Server 2008 R2 SP1
- x64: Windows6.1-KB2819745-x64-MultiPkg.msu
- Windows Server 2012
- x64: Windows8-RT-KB2799888-x64.msu
- Windows Server 2012 R2
- Предустановлен по умолчанию
- Windows 8.1
- Предустановлен по умолчанию
Windows Management Framework 4.0 (WMF) нельзя установить на Windows 8, поэтому следует обновиться до Windows 8.1.
WMF 3.0 и Windows PowerShell 2.0 engine не требуются для установки WMF 4.0. Однако, Windows PowerShell 2.0 engine может быть установлен отдельно, используя Server Manager или Control Panel, для тестирования сценариев,которые используют функциональность Windows PowerShell 2.0 (Powershell.exe -Version, Start-Job -PSVersion, and Register-PSSessionConfiguration –PSVersion). При установленном WMF 3.0 и Windows PowerShell 2.0 engine , можно выбрать для запуска Windows PowerShell 2.0 или Windows PowerShell 3.0. После установки WMF 4.0,можно работать с Windows PowerShell 2.0 или Windows PowerShell 4.0. Windows PowerShell 4.0 обратно совместим с Windows PowerShell 3.0, за исключением указанных в разделе Breaking Changes документа WINDOWS MANAGEMENT Framework 4.0 Release Notes.
Windows PowerShell V4 несовместим:
- System Center 2012 Configuration Manager (not including SP1)
- System Center Virtual Machine Manager 2008 R2 (including SP1)
- Microsoft Exchange Server 2013, Microsoft Exchange Server 2010, and Microsoft Exchange Server 2007
- Microsoft SharePoint 2013 and Microsoft SharePoint 2010
- Windows Small Business Server 2011 Standard
Полезные ссылки по установке и запуску Windows PowerShell:
- Windows PowerShell System Requirements
- Installing Windows PowerShell
- Installing the Windows PowerShell 2.0 Engine
- Starting Windows PowerShell
- Starting the Windows PowerShell 2.0 Engine
2) Какие компоненты были обновлены?
- Windows PowerShell
- Windows PowerShell Integrated Scripting Environment (ISE)
- Windows PowerShell Web Services (Management OData IIS Extension)
- Windows Remote Management (WinRM)
- Windows Management Instrumentation (WMI)
3) Какие новые компоненты были добавлены?
- Windows PowerShell Desired State Configuration (DSC)
4) Версионность PowerShell
Изменения:
- Значение переменной $PSVersionTable.PSVersion обновлено до 4.0
PS > $PSVersionTable.PSVersion
Major Minor Build Revision
—— —— —— ———
4 0 -1 -1
- Изменен баннер copyright
Windows PowerShell
Copyright (C) 2013 Microsoft Corporation. All rights reserved.
- Версия Windows PowerShell 4.0 заменяет версию 3.0. Запросы для загрузки версии 3.0 автоматически загружают версию 4.0. Например, Powershell.exe –Version 3.0 автоматически загружает версию 4.0
- Session configurations автоматически загружает версию 4.0, вместо 3.0
- Командлеты использующие при запуске определенную версию Windows PowerShell, автоматически используют версию 4.0, если указана версия 3.0. Такие командлеты,как Start-Job, Set-PSSessionConfiguration, и Register-PSSessionConfiguration с параметром -PSVersion <Version>
- Значение ключа реестра HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion изменно с 3.0 на 4.0
PS > Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name PowerShellVersion
PowerShellVersion : 4.0
- Значение ключа реестра HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PSCompatibleVersion изменно с 1.0, 2.0, 3.0 на 1.0, 2.0, 3.0, 4.0
PS > Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name PSCompatibleVersion
PSCompatibleVersion : 1.0, 2.0, 3.0, 4.0
Не измененные значения:
- Переменная $pshome ссылается на %windir%\system32\WindowsPowerShell\v1.0
- Расширение скриптов Windows PowerShell имеет значение .ps1
- Значение ключей реестра Windows PowerShell расположены по адресу HKLM:\SOFTWARE\Microsoft\PowerShell\1 и HKLM:\SOFTWARE\Microsoft\PowerShell\3
5) Execution Policy по умолчанию в Windows Server 2012 R2?
Значение Execution Policy по умолчанию в Windows Server 2012 R2 установлено в RemoteSigned. Execution Policy для Windows 8.1 по умолчанию Restricted.
6) Новый параметр –IncludeUserName типа switch у командлета Get-Process
Данный параметр позволяет получить список пользователей от которых запущен процесс. Данный параметр требует запускать с повышенными привилегиями.
PS > Get-Process -IncludeUserName
Get-Process : The ‘IncludeUserName’ parameter requires elevated user rights. Try running the command again in a session that has been opened with elevated user rights (that is, Run as Administrator).
Пример:
PS > Get-Process -IncludeUserName | Where UserName -match System | Format-Table Name,UserName
Name UserName
—- ———
armsvc NT AUTHORITY\SYSTEM
csrss NT AUTHORITY\SYSTEM
csrss NT AUTHORITY\SYSTEM
Для более ранних версий Windows PowerShell:
- tastklist /v
- Get-WmiObject Win32_Process | Format-Table Name,@{n=»UserName»;e={$_.GetOwner().User}}
- Используя WinAPI — Get the Owner of a Process in PowerShell – P/Invoke and Ref/Out Parameters
7) Новый командлет(функция) Get-FileHash
PS > (Get-Command Get-FileHash).CommandType
Function
Посмотреть код функции: — ${function:Get-FileHash}
Используя командлет Get-Member или исходный код функции,можно увидеть,что функция имеет тип retVal.psobject.TypeNames.Insert(0, «Microsoft.Powershell.Utility.FileHash»).
Также можно посмотреть,какое форматирование использует данная функция.
PS > (Get-FormatData Microsoft.Powershell.Utility.FileHash).FormatViewDefinition.Control
Name Control
—- ——-
Microsoft.Powershell.Utility.FileHash TableControl
Далее можно посмотреть столбцы по умолчанию:
PS > (Get-FormatData Microsoft.Powershell.Utility.FileHash).FormatViewDefinition.Control.Rows.Columns
Alignment DisplayEntry
——— ————
Undefined Algorithm
Undefined Hash
Undefined Path
Параметр Algorithm поддерживает следующие параметры:
PS > (Get-Command Get-FileHash).Parameters[«Algorithm»].Attributes.ValidValues
SHA1
SHA256
SHA384
SHA512
MACTripleDES
MD5
RIPEMD160
Примеры:
PS > Get-FileHash $pshome\powershell.exe | Format-List
Algorithm : SHA256
Hash : E9FA973EB5AD446E0BE31C7B8AE02D48281319E7F492E1DDAADDDFBDD5B480C7
Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
PS > Get-FileHash $pshome\powershell.exe -Algorithm Sha1| Format-List
Algorithm : SHA1
Hash : 10A3671C0FBC2BCE14FC94891E87E2F4BA07E0DF
Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Для более ранних версий Windows PowerShell:
- Модуль PSCX и командлет Get-Hash
- Скрипт на .Net под авторством Boe Prox — Get Hashes of Files
- Скрипт на .Net под авторством Lee Holmes — Get-FileHash.ps1
8) Переименовали параметр Workgroup у командлета Remove-Computer
В PowerShell 3.0 командлету Remove-Computer добавили параметр Workgroup(позволяет указать имя рабочей группы,после отсоединения компьютера из домена). В PowerShell 4.0 переименовали данный параметр с Workgroup на WorkgroupName ,теперь оба командлета Add-Computer и Remove-Computer используют единый параметр –WorkgroupName.
9) Новый параметр FullyQualifiedName у командлета Get-Module
В PowerShell 4.0 командлету Get-Module добавили новый параметр типа ModuleSpecification[].
Формат параметра — @{ModuleName = «modulename»; ModuleVersion = «version_number»;GUID=»guid»}. ModuleName и ModuleVersion(желательно придерживаться формата n.n.n.n) – обязательные.
Пример:
PS > Get-Module -FullyQualifiedName @{ModuleName=»AppLocker»;ModuleVersion=»1.0.0.0″} –ListAvailable
PS > Get-Module -Name AppLocker -ListAvailable | Format-Table Name,Version,GUID -AutoSize
Name Version Guid
—- ——- —-
AppLocker 1.1.0.0 27807c40-84db-4998-ae01-11319de093ea
AppLocker 1.0.0.0 9dafd409-67de-4108-8ee9-73cd61f5b7bf
PS > Get-Module -FullyQualifiedName @{ModuleName=»AppLocker»;ModuleVersion=»1.0.0.0″;GUID=»27807c40-84db-4998-ae01-11319de093ea»} –ListAvailable
10) Новый параметр PassThru у командлетов Enable-JobTrigger и Disable-JobTrigger
Параметр Passthru отображает все объекты, созданные или измененные с помощью командлета.
Пример:
PS > Get-ScheduledJob | Get-JobTrigger
Id Frequency Time DaysOfWeek Enabled
— ——— —- ———- ——-
1 Weekly 11.11.2013 23:00:00 {Monday, Wednesday, … True
PS > Get-ScheduledJob | Get-JobTrigger | Disable-JobTrigger -PassThru
Id Frequency Time DaysOfWeek Enabled
— ——— —- ———- ——-
1 Weekly 11.11.2013 23:00:00 {Monday, Wednesday, … False
11) Новый параметр RepeatIndefinitely у командлетов New-JobTrigger и Set-JobTrigger
Параметр RepeatIndefinitely позволяет избавиться от использования конструкции вида -RepetitionDuration ([TimeSpan]::MaxValue), которая служит для неоднократного запуска запланированного задания на неопределенный срок.
Пример:
PS > New-JobTrigger -Once -At «1/11/2013» -RepetitionInterval (New-TimeSpan -Hour 2) -RepetitionDuration ([TimeSpan]::MaxValue)
Теперь команду можно записать:
PS > New-JobTrigger -Once -At «1/11/2013» -RepetitionInterval (New-TimeSpan -Hour 2) -RepeatIndefinitely
Команда создает job trigger ,который запускает раз в 2 часа на неопределенный срок. Старт задачи 1/11/2013 – 0:00:00.
12) Новый параметр RunNow у командлетов Register-ScheduledJob и Set-ScheduledJob
Параметр RunNow позволяет не указывать параметр trigger для job для немедленного выполнения задачи без указания даты и времени.
Пример:
PS > Register-ScheduledJob -Name Test-FileName -FilePath C:\Scripts\TestFile.ps1 –RunNow
13) Изменения в командлете Save-Help?
Командлет Save-Help теперь позволяет сохранить справку для модулей(modules), которые установленные на удаленных компьютерах. В PowerShell 3.0 командлет Save-Help позволял работать только с локальным компьютером. Хотя есть возможность экспортировать модуль с удаленного компьютера,используя Windows PowerShell remoting и получить ссылку на объект PSModuleInfo, свойство HelpInfoUri не сохраняется. В PowerShell 4.0 свойство HelpInfoUri сохраняется, что позволяет Save-Help работать с удаленными модулями. Также возможно сохранить объект PSModuleInfo на диск или внешний накопитель используя командлет Export-CliXml на компьютере без доступа к интернету, импортировать объект на компьютере с интернетом и запустить Save-Help на десериализованном объектее PSModuleInfo. Сохраненный файлы помощи можно перенести на исходный компьютер и обновить справку с помощью командлета Update-Help.
Пример:
Example 1: Run Save-Help to save the help for the DhcpServer module from an Internet-connected client computer, without installing the DhcpServer module or DHCP Server role on the local computer.
# Option 1: Run Invoke-Command to get the remote module and call Save-Help
$m = Invoke-Command -ComputerName RemoteServer -ScriptBlock { Get‑Module ‑Name DhcpServer -ListAvailable }
Save-Help -Module $m -DestinationPath C:\SavedHelp
# Option 2: Use a PSSession to get the remote module and call Save-Help
$s = New-PSSession -ComputerName RemoteServer
$m = Get-Module -PSSession $s -Name DhcpServer -ListAvailable
Save-Help -Module $m -DestinationPath C:\SavedHelp
# Option 3: Use a CimSession to get the remote module and call Save-Help
$c = New-CimSession -ComputerName RemoteServer
$m = Get-Module -CimSession $c -Name DhcpServer -ListAvailable
Save-Help -Module $m -DestinationPath C:\SavedHelp
Example 2: Install help for the DhcpServer module on a computer without any network access.
# Run Export-CliXml to serialize the PSModuleInfo object to disk or removable media
$m = Get-Module -Name DhcpServer –ListAvailable
Export-CliXml –Path E:\UsbFlashDrive\DhcpModule.xml –InputObject $m
# Transport the removable media to a computer with Internet access and import with Import-CliXml
$deserialized_m = Import-CliXml E:\UsbFlashDrive\DhcpModule.xml
Save-Help -Module $deserialized_m -DestinationPath E:\UsbFlashDrive\SavedHelp
# Transport the removable media back to the computer without network access and install the help
Update-Help –Module DhcpServer –SourcePath E:\UsbFlashDrive\SavedHelp
Добавить комментарий