sergey vasin

The IT blog

Задачи после миграции на Windows Server 2012– Hey, Scripting Guy! Blog

leave a comment »

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о некоторых задачах, которые необходимо выполнить после миграции на Windows Server 2012.

Microsoft Scripting Guy, Ed Wilson на связи. После любой миграции всегда остаются некоторые задачи, требующие выполнения. К счастью, в Windows Server 2012 удаленное выполнение команд (Windows PowerShell Remoting) включено по умолчанию. Это весьма неплохо.

Заметка: О личном опыте обновления моих серверов до Windows Server 2012 вы можете прочитать в моем посте: The 32-hour Upgrade to Windows Server 2012.

Первая задача – убедитесь, что вы обновили файлы справки Windows PowerShell

Одна из замечательных функций PowerShell 3.0 – это возможность обновления help-файлов. Это позволяет поддерживать на вашей машине самую последнюю версию справки. После того, как я завершил обновление серверов до Windows Server 2012 (это также справедливо для компьютера с Windows 8 или любого компьютера с Windows PowerShell 3.0) мне нужно запустить командлет Update-Help.

Я бы мог просто запустить командлет Update-Help на каждом компьютере, после чего они скачали бы с интернета последнюю версию файлов справки. Но это неэффективный метод, и Windows PowerShell 3.0 обладает возможностью offline-обновлений.

Итак, на моем ноутбуке (на котором установлены Windows 8 RSAT, и поэтому на нем присутствуют все модули) я запускаю командлет Save-Help. В качестве пути я указываю ему общую папку в моей сети.

01

Не очень впечатляюще. В чем причина? Папка должна существовать. Я надеялся, что командлет сам ее создаст. Ну, не проблема. Я создам ее самостоятельно.

PS C:\> New-Item -ItemType directory -Path \\dc1\share\poshhelp

Directory: \\dc1\share

Mode LastWriteTime Length Name

—- ————- —— —-

d—- 11/5/2012 2:12 PM poshhelp

PS C:\> Save-Help -Module * -DestinationPath \\dc1\share\poshHelp

Появилась пара ошибок, но это из-за того, что командлет пытается обновить модули, для которых нет обновлений справки. Отлично. Теперь мне нужно обновить файлы справки на всех серверах с Windows Server 2012 при помощи этой общей папки. Это легче, чем кажется. Как вы помните, на моем компьютере установлены RSAT, поэтому у меня есть доступ к командлету Get-ADComputer. С помощью следующей команды я получу список всех серверов на Windows Server 2012 в моей сети.

PS C:\> Get-ADComputer -Filter * -properties operatingsystem | where operatingsystem -match 2012 | select name

name

—-

DC3

DC4

W8SERVER8

W8S504

HYPERV3

SQL1

WDS1

HYPERV2

DC2

WEB1

Я сохраню результаты выполнения команды в переменной cn (не используя командлет Select-Object):

$cn = Get-ADComputer -Filter * -properties operatingsystem | where operatingsystem -match 2012

Используя автоматическое развертывание (expansion) (замечательная функция Windows PowerShell 3.0) можно легко получить имена компьютеров. Для этого нужно просто указать свойство. Я включу это в команду для создания сессии PowerShell. Я знаю, что некоторые компьютеры сейчас выключены, поэтому я ожидаю появления нескольких ошибок.

$session = New-PSSession -cn $cn.name -Credential iammred\administrator

Я запрашиваю значение переменной $sessions, чтобы убедиться, что хотя бы некоторые компьютеры работают.

PS C:\> $session

Id Name ComputerName State ConfigurationName Availability

— —- ———— —— —————— ————

4 Session4 DC3 Opened Microsoft.PowerShell Available

5 Session5 DC4 Opened Microsoft.PowerShell Available

8 Session8 HYPERV3 Opened Microsoft.PowerShell Available

11 Session11 HYPERV2 Opened Microsoft.PowerShell Available

9 Session9 SQL1 Opened Microsoft.PowerShell Available

10 Session10 WDS1 Opened Microsoft.PowerShell Available

13 Session13 WEB1 Opened Microsoft.PowerShell Available

12 Session12 DC2 Opened Microsoft.PowerShell Available

Команды и их вывод представлены ниже:

02

Теперь я использую командлет Invoke-Command для обновления help-файлов на всех моих серверах:

Invoke-Command -Session $session -ScriptBlock {Update-Help -PSPath \\dc1\Share\poshhelp -Force}

Если бы я хотел обновить файлы справки путем скачивания их из интернета, я бы указал следующую команду:

Invoke-Command -Session $session -ScriptBlock {Update-Help -force}

Естественно, появится еще несколько сообщений об ошибках о недоступности некоторых модулей, но в итоге, я обновил файлы справки на всех моих серверах.

Включение поддержки скриптов

Теперь мне нужно включить на серверах поддержку скриптов.

Это можно сделать также при помощи одного командлета – Set-ExecutionPolicy.

Invoke-Command -Session $session -ScriptBlock {Set-ExecutionPolicy remotesigned -force}

Я могу проверить результаты, воспользовавшись командлетом Get-ExecutionPolicy.

PS C:\> Invoke-Command -Session $session -ScriptBlock {Get-ExecutionPolicy}

PSComputerName RunspaceId Value

————— ———- ——

DC4 571a049f-c671-46e7-b72a-… RemoteSigned

DC3 8cc8e20d-2426-44fd-9ae5-… RemoteSigned

HYPERV3 b3f5afae-1f1b-43ca-918f-… RemoteSigned

SQL1 9609e293-26ff-4866-9734-… RemoteSigned

WEB1 d5dfcde8-2de1-4b8f-9a21-… RemoteSigned

WDS1 75124ffd-5f4b-4e27-91f4-… RemoteSigned

DC2 ea287978-f21f-4f27-85e1-… RemoteSigned

HYPERV2 a4e5f5ab-add7-4fe3-a7a7-… RemoteSigned

Это все, что касается обновления help-файлов и включения поддержки скриптов на моих серверах с Windows Server 2012.

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/07/post-windows-server-2012-migration-powershell-cleanup-work.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Ноябрь 8, 2012 в 06:35

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s