Авторизация



Теги сайта



0х0000007b 1c access control list acl activation active directory ad roles add route adexplorer apache authentication to zabbix bare metal recovery bg zsh bicycle books bruteforce ccna centos centos packet certificate change net adapter name chap chkrootkit chmod cinnamon cisco class clipboard cmd configuring cpu cores cron crontab csc custom object cut cvsup cvsup-without-gui db dekorator dev null 2 1 dhcp dhcp reservation disable ipv6 diskpart dism django dns domain naming master domain roles download download powershell enable routing on windows enabled encapsulation english english language esx eventlog fail2ban fastest_cvsup fedora fg zsh field formatdatabase freebsd fsmo get-aduser hardware https hyper-v idioms iis inheritance iperf iptables iscsi jobs kernel panic ldap ldap аутентификация zabbix limit lingualeo linux mcitp mcsa memory check method microsoft mod_ssl mount mssql mysql mysql user password netcache network network config network load balance cluster network scripts nginx nlb num lock numlock oop openssl pap partition pdc permissions pfx php pipeline pkg_version polymorphism ports upgrade portupgrade posix powershell ppp puppet pwdlastset python rdp regedit registry remote enable restrictions reverse proxy rhel rid rope jumping bridge мост прыжок высота route add route freebsd routing protocol rpm sc sc sdset sc sdshow schema scope script output secure web security service permissions services session set dns servers set ip address sftp shell script show variables snmp sound scheme sounds speed ssh ssl standard-supfile subinacl supfile switch switchport sync syncronization task sсheduler tempdb tripplite monitoring tweaks unix user must change password at next logon utf8 vim vlan vmware w32tm web windows windows 2003 r2 windows 2008 r2 windows firewall windows server windows server 2012 windows server backup windows service permissions windows пингалка winre wsus xargs xrdp yum zabbix zabbix external check zabbix ldap authentication zsh автоматическое обновление портов freebsd автономные файлы активация английский язык база данных безопасность active directory буфер вело велосипед видео включение роутинга в windows внешняя проверка zabbix вредоносное программное обеспечение posix задание двумерного массива звуки звуковая схема идиомы иероглифы киев кодировка командная строка конфигурация сети маршрутизация маршруты в freebsd маршруты в redhat linux область обновление портов ограничения windows основные команды пакеты centos перевод перенос планировщик задач покатушки полет над днепром проблемы кодировки протокол путь развития в it разрешения служб windows регистрируем cmd скриптом недоступность хоста реестр резервирование ip скриптом роли домена русские символы синхронизация скачать скачать powershell скачать книгу скорость сети списки контроля доступа тарзанка твики фоновые процессы цикл mssql

Главная страница Microsoft POWERSHELL
Скрипт PowerShell для удаленного выполнения командлетов Печать
Import-Module ActiveDirectory # Импортируем модуль
Write-Host
Write-Host 'Original and comments: http://vam.in.ua/index.php/it/25-ms-powershell/195-powershell-script-executing-on-remote-computers.html' -ForegroundColor DarkCyan
Write-Host 'Feedback: http://vam.in.ua/index.php/contacts/2-admins/1-aleksey.html' -ForegroundColor DarkCyan
Write-Host
    

$script:servers = Get-ADComputer -Filter * -Properties OperatingSystem | ? {($_.OperatingSystem -match ".*?(server).*?") -and ($_.Enabled -eq "True")} # Получить из ActiveDirectory все незаблокированные серверы 2008 и 2008 R2
$script:selectedServers = ($servers | Out-GridView -Title "Select servers" -PassThru -ErrorAction Stop) # Дать возможность вручную выбрать необходимые сервера. Для этой функции необходима установленная платформа PowerShell_ISE

foreach ($srvr in $selectedServers) # Для каждого сервера из списка выбранных серверов выполнить
{
    [string]$script:currentSRVname = ($srvr).DNSHostName
    [string]$script:currentOperatingSystem = ($srvr).OperatingSystem
    if (Test-Connection -ComputerName $currentSRVname -Count 3 -ErrorAction SilentlyContinue) # Если проходит Echo-request по DNS
    {
        if ($currentOperatingSystem -match ".*?(server).*?(2012).*?") # Если операционная система Windows Server 2012
        {
            # Выполнить для 2012
        }
        if ($currentOperatingSystem -match ".*?(server).*?(2008).*?(r2).*?") # Если операционная система Windows Server 2008 R2
        {
            # Выполнить для 2008 R2
            Invoke-Command -ComputerName $currentSRVname -ScriptBlock {&netstat -ano | findstr -i 3389} # Пример выполения команд на удаленном хосте. Добавление ключа -AsJob выполнит скрипт-блок в качестве фонового задания
        }
        if ( ($currentOperatingSystem -match ".*?(server).*?(2008).*?") -and ($currentOperatingSystem -notmatch ".*?(server).*?(2008).*?(r2).*?") ) # Если операционная система Windows Server 2008
        {
            if ((Get-WmiObject Win32_OperatingSystem -computer $currentSRVname).OSArchitecture -match ".*?(64).*?" ) # Если операционная система 64 бит
            {
                # Выполнить для 2008 x64
            }
            if ((Get-WmiObject Win32_OperatingSystem -computer $currentSRVname).OSArchitecture -match ".*?(32).*?" ) # Если операционная система 32 бит
            {
                # Выполнить для 2008 x86
            }
        }
        if ($currentOperatingSystem -match ".*?(server).*?(2003).*?") # Если операционная система Windows Server 2003
        {
            if ((Get-WmiObject Win32_OperatingSystem -computer $currentSRVname).OSArchitecture -match ".*?(64).*?" ) # Если операционная система 64 бит
            {
                # Выполнить для 2003 x64
            }
            if ((Get-WmiObject Win32_OperatingSystem -computer $currentSRVname).OSArchitecture -match ".*?(32).*?" ) # Если операционная система 32 бит
            {
                # Выполнить для 2003 x86
            }
        }
    } else # Если не проходит Echo-request по DNS
    {
        Write-Host "Server $currentSRVname is unreachable" -ForegroundColor DarkRed # Оповещаем о недоступном компьютере
    }
}
 
Скрипт PowerShell для развертывания ролей на нескольких серверах Печать

Для того, чтобы удаленно выполнить установку ролей и/или фитч на определенные компьютеры взятые из Active Directory, нам понадобятся:

  1. Сервер под управлением Windows Server 2012 с установленными средствами администрирования (RSAT) Active Directory module for Windows PowerShell из AD DS and AD LDS Tools;
  2. Шаблон установки в формате XML, описывающий что нужно устанавливать и как это все сконфигурировать;
  3. Установленная графическая платформа PowerShell_ISE;
  4. Скрипт PowerShell

 

Как создать шаблон установки DeploymentConfigTemplate.xml

Для этого нужно запустить Server Manager на Server 2012, из которого с помощью Add Roles and Features Wizard начать добавление и настройку всех необходимых ролей и фитч в обычном режиме, остановиться следует на этапе подтверждения Confirmation (рис. 1). В своем примере я буду добавлять на необходимые сервера фитчу Telnet Client.

На этапе Confirmation необходимо кликнуть на гиперссылку Export configuration settings и сохранить полученный XML файл конфига в удобное место.

image_ws2012_export-configuration-settings-for-installations

Рисунок 1

 

Скрипт развертывания

Import-Module ActiveDirectory,ServerManager # Импортируем нужные нам модули

$servers = Get-ADComputer -Filter * -Properties OperatingSystem | where {$_.OperatingSystem -match '.*?(server).*?(2012).*?'} # Записываем в переменную компьютеры из Active Directory с операционной системой Windows Server 2012
$selected = ($servers.Name | Out-GridView -Title "Select Servers to Configure" -PassThru -ErrorAction Stop) # Записываем в переменную имена компьютеров, которые можно будет выбрать в интерактивном окне. Для этого необходима установленная платформа Powershell_ISE

$sb = {param ($s,$f) Install-WindowsFeature -ComputerName $s -ConfigurationFilePath $f} # Формируем скрипт-блок. Задаем временные переменные, которые будут брать на себя меняющиеся значения параметров командлета Install-WindowsFeature

$configfile = 'C:\Templates\DeploymentConfigTemplate_TelnetClient.xml' # Указываем куда мы сохранили конфиг

foreach ($server in $selected) # Для каждого сервера из выбранных в интерактивном режиме выполнять
{    
    Start-Job -Name $server -ScriptBlock $sb -ArgumentList ($server,$configfile) # Стартуем задачу, вызывающую подготовленный скрипт-блок и передающую ему соответствующие параметры. Как посмотреть вывод задач я описывал в статье http://vam.in.ua/index.php/it/25-ms-powershell/149-powershell-background-tasks.html
}
 
Настройка Windows Server Backup на iSCSI с помощью PowerShell и DiskPart Печать

В данной статье я продемонстрирую как от начала до конца настроить резервное копирование в Windows Server 2012 Core. Бэкапить будем на iSCSI хранилище.

Итак, нам нужно будет настроить три компонента:

  • [PowerShell] Microsoft iSCSI Initiator
  • [DiskPart] Подготовка раздела для бэкапов к работе с Windows Server Backup
  • [PowerShell] Установка и настройка Windows Server Backup Feature

 

1. Microsoft iSCSI Initiator

Хочу отметить, что даже в Server Core версии Вы можете получить привычную графическую оснастку iSCSI, вызвав её в командной строке с помощью команды iscsicpl.exe. Столкнуться с отсутствием графической оснастки iSCSI можно в версиях WinPE и WinRE.

 

Настроим iSCSI Initiator с помощью PowerShell:

PS C:\> Import-Module iSCSI # Добавляем модуль PowerShell
PS C:\> Start-Service MSiSCSI # Запускаем сервис iSCSI инициатора
PS C:\> New-IscsiTargetPortal -TargetPortalAddress 10.0.0.70 # Подскажем инициатору где находится наш iSCSI портал с таргетами

InitiatorInstanceName  :
InitiatorPortalAddress :
IsDataDigest           : False
IsHeaderDigest         : False
TargetPortalAddress    : 10.0.0.70
TargetPortalPortNumber : 3260
PSComputerName         :

PS C:\> Get-IscsiTarget | Format-Table -AutoSize # Посмотрим какие на портале разрешены таргеты для нас

IsConnected NodeAddress                                        PSComputerName
----------- -----------                                        --------------
      False iqn.2008-08.com.starwindsoftware:storage01.testdlc

PS C:\> Connect-IscsiTarget -NodeAddress 'iqn.2008-08.com.starwindsoftware:storage01.testdlc' -IsPersistent:$true -TargetPortalAddress 10.0.0.70 -TargetPortalPortNumber 3260 -AuthenticationType ONEWAYCHAP -ChapUsername 'myUser' -ChapSecret 'MyStrongPa$$w0rd' # Подключимся к необходимому таргету используя Chap аутентификацию

AuthenticationType      : ONEWAYCHAP
InitiatorInstanceName   : ROOT\ISCSIPRT\0000_0
InitiatorNodeAddress    : iqn.1991-05.com.microsoft:win-dh54phcianr
InitiatorPortalAddress  : 0.0.0.0
InitiatorSideIdentifier : 400001370000
IsConnected             : True
IsDataDigest            : False
IsDiscovered            : True
IsHeaderDigest          : False
IsPersistent            : True
NumberOfConnections     : 1
SessionIdentifier       : fffffa8301d38020-4000013700000005
TargetNodeAddress       : iqn.2008-08.com.starwindsoftware:storage01.testdlc
TargetSideIdentifier    : 33aa
PSComputerName          :

 

Настройка инициатора окончена.

 

2. Подготовка раздела для бэкапов к работе с Windows Server Backup

Перед тем как приступать к конфигурированию самого бэкапа, нужно наш уже подключенный iSCSI раздел предварительно причесать с помощью DiskPart, дабы избежать ошибок типа:

DiskPart has encountered an error: The media is write protected.

Set-WBPolicy : Formatting the disk has failed. Please ensure the disk is online and accessible. Unknown error (0x8004280a)

 

PS C:\> diskpart.exe

DISKPART> list disk # Смотрим доступные диски

  Disk №№№  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online           40 GB      0 B
  Disk 1    Offline          60 GB    60 GB

DISKPART> select disk 1 # Наш iSCSI раздел составляет 60 Гб. Как видно из вывода предыдущей команды, нужный нам диск значится с идентификатором 1, с ним и будем работать

Disk 1 is now the selected disk.

DISKPART> online disk # Переводим наш диск в онлайн состояние

DiskPart successfully onlined the selected disk.

DISKPART> detail disk # Просмотрим подробную информацию о диске

ROCKET IMAGEFILE SCSI Disk Device
Disk ID: 00000000
Type   : iSCSI
Status : Online
Path   : 0
Target : 0
LUN ID : 0
Location Path : UNAVAILABLE
Current Read-only State : Yes
Read-only  : Yes
Boot Disk  : No
Pagefile Disk  : No
Hibernation File Disk  : No
Crashdump Disk  : No
Clustered Disk  : No

There are no volumes.

DISKPART> attributes disk clear readonly # Как видно из предыдущего вывода, наш диск находится в состоянии Read-only, которое нам не подходит. Исправляем это

Disk attributes cleared successfully.

DISKPART> exit

Leaving DiskPart...
PS C:\>

Теперь все готово для настройки бэкапа.

 

Установка и настройка Windows Server Backup Feature

PS C:\> Import-Module ServerManager # Добавляем модуль PowerShell
PS C:\> Add-WindowsFeature -Name Windows-Server-Backup -Restart:$false # Устанавливаем фичу WSB

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {Windows Server Backup}

PS C:\> $policy = New-WBPolicy # Вначале мы должны создать политику бэкапа, содержащую все необходимые параметры
PS C:\> $policy | Add-WBSystemState # Добавляем в политику бэкап SystemState
PS C:\> $policy | Add-WBBareMetalRecovery # Добавляем в политику возможность восстановления на новое железо
PS C:\> Add-WBVolume -Policy $policy -Volume (Get-WBVolume -CriticalVolumes) # Указываем в политике, что нужно бэкапить все критические тома. Вывод покажет нам их

VolumeLabel : System Reserved
MountPath   :
MountPoint  : \\?\Volume{c43cabd2-f303-11e2-93ec-806e6f6e6963}
FileSystem  : NTFS
Property    : Critical, ValidSource, IsOnDiskWithCriticalVolume
FreeSpace   : 115138560
TotalSpace  : 367001600

VolumeLabel :
MountPath   : C:
MountPoint  : \\?\Volume{c43cabd3-f303-11e2-93ec-806e6f6e6963}
FileSystem  : NTFS
Property    : Critical, ValidSource, IsOnDiskWithCriticalVolume
FreeSpace   : 35590725632
TotalSpace  : 42580574208


PS C:\> Get-WBDisk | ? {$_.Properties -like 'ValidTarget'} # Получим список дисков, на которые возможно производить бэкап. В моем случае диск всего один - наш подключенный iSCSI

DiskName       : ROCKET IMAGEFILE SCSI Disk Device
DiskNumber     : 1
DiskId         : 00000000-0001-0000-0000-000000000000
TotalSpace     : 64424509440
FreeSpace      : 64424509440
Volumes        : {}
ContainsBackup : False
BackupVolumeId : 00000000-0000-0000-0000-000000000000
Properties     : ValidTarget

PS C:\> $backuptarget = New-WBBackupTarget -Disk (Get-WBDisk | ? {$_.DiskNumber -eq 1}) # Запишем в переменную диск с идентификатором 1 (взят из предыдущего вывода, параметр DiskNumber)
PS C:\> Add-WBBackupTarget -Policy $policy -Target $backuptarget # Добавим в политику диск назначения, заключенный в переменную

Label                  :
WBDisk                 : ROCKET IMAGEFILE SCSI Disk Device
WBVolume               :
Path                   :
TargetType             : Disk
InheritAcl             : False
PreserveExistingBackup : False


PS C:\> Set-WBSchedule -Policy $policy -Schedule 02:45 # Укажем в политике расписание когда будет стартовать наш бэкап

Monday, July 22, 2013 2:45:00 AM

PS C:\> Set-WBVssBackupOption -Policy $policy -VssFullBackup # Я также задам параметр VssFullBackup, т.к. мой сервер больше ничем бэкапиться не будет
PS C:\> $policy # Посмотрим на параметры нашей политики перед применением. Перепроверяем особенно диск назначения для бэкапов, т.к. он будет отформатирован и все данные на нём будут уничтожены

Schedule              : {7/22/2013 2:45:00 AM}
BackupTargets         : {WIN- 7/22/2013 6:40:18 AM Disk01}
VolumesToBackup       : {System Reserved, Local disk (C:)}
FilesSpecsToBackup    :
FilesSpecsToExclude   :
ComponentsToBackup    :
BMR                   : True
SystemState           : True
OverwriteOldFormatVhd : False
VssBackupOptions      : VssFullBackup

PS C:\> Set-WBPolicy -Policy $policy # Применяем политику. Нас в последний раз предупреждают что данные на диске назначения будут уничтожены. После успешного выполнения этого командлета наше задание бэкапа на сервере будет полностью готово

Warning
Do you want to format the backup storage disk ROCKET IMAGEFILE SCSI Disk
Device?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):

Посмотрим настроенные параметры и результаты выполнения бэкапа

Get-WBSummary # Параметры бэкапа на сервере

NextBackupTime                  : 7/23/2013 12:00:00 AM
NumberOfVersions                : 0
LastSuccessfulBackupTime        : 1/1/0001 12:00:00 AM
LastSuccessfulBackupTargetPath  :
LastSuccessfulBackupTargetLabel :
LastBackupTime                  : 1/1/0001 12:00:00 AM
LastBackupTarget                :
DetailedMessage                 :
LastBackupResultHR              : 0
LastBackupResultDetailedHR      : 0
CurrentOperationStatus          : NoOperationInProgress

Get-WBJob -Previous 1 # Результат выполнения последнего задания бэкапа. В строке ErrorDescription отображены ошибки задания

JobType          : Backup
StartTime        : 22.07.2013 2:30
EndTime          : 22.07.2013 2:30
JobState         : Completed
CurrentOperation :
HResult          : 8078005D
DetailedHResult  : 0
ErrorDescription : Windows Backup cannot find any of the backup storage locations.

JobItems         :
VersionId        :
SuccessLogPath   :
FailureLogPath   :

 

Примечание

При планировании стратегии развертывания из Bare Metal Recovery резервной копии Windows Server Backup, нужно учитывать что восстановить такую копию будет возможно только на диск, который по размеру соответствует или превышает исходный. Другими словами, если Вы бэкапите диск C: размером 500 Гб, на котором свободно 450 Гб, для успешного восстановления из Bare Metal Recovery резервной копии Вам потребуется новый диск не менее пол террабайта.

 

Как восстановить систему из созданного нами образа с Bare Metal Recovery

Это я подробно описал в своей статье (ссылка).

 
<< Первая < Предыдущая 1 2 3 4 5 6 7 8 9 10 Следующая > Последняя >>

Страница 7 из 20
Главная страница Microsoft POWERSHELL