Слайд 2
TOC
Legacy technologies
WMI
RPC
PowerShell
Tools
Слайд 3
Windows Remote Management: Overview
Overview of remote management technologies
in Windows-based infrastructure.
Слайд 4
Windows Management Instrumentation
Одна из первых технологий Windows для
управления локальным и удалёнными компьютерами (NT5.0+).
WMI частная реализация Web-Based
Enterprise Management (WBEM)
WBEM – стандартная технология доступа к информации в корпоративных средах, частная реализация Common Information Model (CIM).
CIM – описывает управляемые элементы ИТ-инфраструктуры и их связи. (http://dmtf.org/standards/cim)
CIM, WBEM, WMI, в случае Windows, – одно и то же.
Слайд 5
Что можно сделать при помощи WMI:
Управлять локальными дисками,
службами, системным журналом и т.п.
Управлять сетевыми настройками: IP-адрес, использование
DHCP, DNS-серверы.
Получение информации для мониторинга состояния системы: место на диске
Получение информации о конфигурации системы: имя компьютера, объём RAM, установленная ОС и обновления.
Получение конфигурации установленных приложений: SCCM, Exchange, SQL Server.
etc.
Слайд 7
Управляемые ресурсы
Любой компонент системы или установленного приложения:
Локальные диски
Журналы
ОС
Службы ОС
SQL Server
SCCM
Exchange
Сама система (глобальные свойства)
Принтеры
Общие папки
Оборудование
Слайд 8
Классы WMI
Каждый управляемый ресурс принадлежит к какому-либо классу.
Класс
– описание свойств ресурса и доступных методов (команд).
Примеры:
Win32_LogicalMemoryConfiguration
Win32_Service
Win32_NTLogEvent
Exchange_Mailbox
CCM_SoftwareDistributionClientConfig
Слайд 10
Провайдеры WMI
Каждый ресурс имеет свой собственный API
В WMI
используется стандартная модель доступа.
Провайдер транслирует запросы между службой WMI
и управляемыми ресурсами.
Поэтому, провайдеры напоминают драйверы.
Провайдер может представлять:
один класс (Registry – StdRegProv)
несколько классов (Win32 - Win32_Process, Win32_LogicalDisk etc.)
Слайд 13
Инфраструктура WMI
Служба WMI (winmgmt)
Обеспечивает взаимодействие между провайдерами, репозиторием
и приложениями.
WMI-репозиторий
Организован в виде namespaces (root\default, root\cimv2)
Namespaces используются для
разграничения доступа (ala папки в ф.с.)
http://wutils.com/wmi/namespaces.html
Хранит только статические данные (описания классов)
Физически - %SYSTEMROOT%\System32\wbem\
Слайд 15
Как получить доступ к WMI?
Для программистов: COM API
(WMI Component Object Model (COM) API), Microsoft.Management.Infrastructure (C#)
Для администраторов:
GUI
WMI
Explorer
wbemtest.exe
WMI Administrative Tools
Scriptomatic 2.0
Coretech WMI and PowerShell Browser http://goo.gl/sySC5o
Слайд 16
Как получить доступ к WMI?
CLI
wmic
PowerShell
Scripting:
VBScript - Scripting API
for WMI (http://goo.gl/EWt23b)
PowerShell - Get-WmiObject, Get-CimInstance
Слайд 18
Вопросы?
Архитектура WMI, общие концепции.
Слайд 19
Example: VBS – Total Visible Memory
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & _
"\root\cimv2")
Set colItems = objWMIService.InstancesOf("Win32_OperatingSystem")
For Each objItem In colItems
Wscript.Echo "Total Physical Memory (KB): " & _
objItem.TotalVisibleMemorySize
Next
Слайд 20
Example: VBS – Installed Updates
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer)
Set colItems = objWMIService.ExecQuery(_
"Select * from
Win32_QuickFixEngineering")
For Each objItem in colItems
Wscript.Echo "HotFixID: " & objItem.HotFixID
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "InstalledOn: " & objItem.InstalledOn
Next
Слайд 21
Example: VBS – Disable User
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & _
"\root\cimv2")
Set colItems = objWMIService.ExecQuery(_
"SELECT *
FROM Win32_UserAccount WHERE Name = 'User'")
For Each objItem In colItems
objItem.Disabled = TRUE
objItem.Put_()
Next
Слайд 22
Example: VBS – Restart Service
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
("SELECT *
FROM Win32_Service where Name = 'Themes'")
For Each objService In colServices
Return = objService.StopService()
If Return 0 Then
Wscript.Echo "Failed " & VBNewLine & "Error code = " & Return
Else
WScript.Echo "Succeeded"
objService.StartService()
End If
Next
Слайд 24
wmic syntax
wmic qfe | find "2998527"
filtering using “find” command
qfe where HotfixID= "KB2998527"
filtering,
strict compliance only, works in CLI only
wmic memorychip get Capacity << clear output
while using property’s name
wmic path win32_QuickFixEngineering get Hotfixid << full path
w/o usage of aliases
Слайд 25
Example: wmic – Rich output
wmic /output:C:\temp\CPU1.htm cpu get
Name, MaxClockSpeed, NumberOfCores, SocketDesignation /format:hform
Слайд 26
DCOM (distributed component object model)
Используется WMI для
удалённого подключения.
Состоит из 2-х частей:
COM - стандартная модель Microsoft
для взаимодействия приложений друг с другом
RPC (Remote Procedure Calls) – технология взаимодействия клиент-серверных приложений. Может вызывать удалённо функции, передавать объекты и т.п.
Слайд 28
Example: VBS – Remote DHCP Enable
strComputer = “CLT1.exchange12rocks.net“
Set objWMIService = GetObject(_
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration " _
& "where
IPEnabled=TRUE")
For Each objNetAdapter In colNetAdapters
errEnable = objNetAdapter.EnableDHCP()
Next
Слайд 30
WinRM
Частная реализация WS-Management
Единственный порт – 5985/6 (HTTP/S)
Активация:
2003-2008 R2:
winrm qc
2012+: включён по умолчанию
Слайд 31
Как использовать WinRM?
Удалённая командная строка:
winrs -r: cmd.exe
Запуск службы:
winrm
invoke StartService wmicimv2/Win32_Service?Name=Themes
Перезагрузка:
winrm invoke reboot wmicimv2/Win32_OperatingSystem -r:
Информация о системе:
[xml]$osInfo
= winrm get wmicimv2/Win32_OperatingSystem /format:pretty
$osInfo.Win32_OperatingSystem
Слайд 32
Вопросы?
Работа с WMI при помощи VBScript, wmic, WinRM.
Слайд 35
What is PowerShell?
Script language
Command-line interface with auto-completion
Available as
built-in from Windows Vista
Object-oriented – result of each command
is an object but no text string
“Verb-Noun” system of commands (cmdlets)
Get-Process
Stop-Service
Set-Mailbox
Easily extensible
Слайд 36
PS primitives
Pipeline – transfers objects between commands:
Get-Process mmc.exe
| Stop-Process
Variable – text string starting with “$” sign:
$Counter
= 10
$Files = Get-ChildItem -Path C:\temp\
“this” variable ($_) – contains current object:
1, 2, 3 | ForEach-Object {echo ($_+5)}
Properties – each object is described by one or many properties:
$Files.Count
Methods – most objects have methods to execute:
$Files.GetType()
Слайд 37
PS Aliases
Short aliases exist for some of the
built-in cmdlets:
where -> Where-Object
cd -> Set-Location
man -> help
Слайд 38
Main cmdlets
Get-Help (help)
Get-Command
Get-Member
Select-Object (select)
Get-Content (gc)
ForEach-Object (foreach, %)
Write-Output (echo)
Where-Object
(where)
Слайд 40
Complex Example
$Files | where {$_.LastWriteTime -gt '01.01.2010'} |
select Name, Length
Слайд 42
Cmdlets: CIM vs. WMI
Get-WmiObject:
PowerShell 2.0
DCOM/RPC
Get-CimInstance:
PowerShell 3.0
WS-Man/HTTP(S)
Improved compatibility (non-Windows
systems, down-level OS)
Слайд 43
Example: PS – OLD
$Service = Get-WmiObject -Query "SELECT * FROM Win32_Service
WHERE Name = 'Themes'"
$Return = $Service.ChangeStartMode("Manual")
if ($Return.ReturnValue -eq 0) { "Success" }
else { "$($Return.ReturnValue) was reported" }
Слайд 44
Example: PS – NEW
$Return = Invoke-CimMethod -Query "SELECT
* FROM Win32_Service WHERE Name = 'Themes'"
-MethodName 'ChangeStartMode'
-Arguments @{StartMode
= 'Manual'}
if ($Return.ReturnValue -eq 0) { "Success" }
else { "$($Return.ReturnValue) was reported" }
Слайд 45
Remote-enabled PowerShell-cmdlets
Слайд 46
PowerShell Remoting
Произвольные команды PS на удалённых компьютерах.
Invoke-Command
Полноценная удалённая
сессия PowerShell
*-PSSession*
Слайд 47
PS Remoting – minimum requirements
Windows XP SP3
.NET Framework
2.0 SP1
Windows Management Framework
Windows PowerShell 2.0
Windows Remote Management (WinRM)
2.0
Слайд 48
PS Remoting - activation
Enable-PSRemoting
Enabled by default on Windows
2012 and later.
Remote activation:
http://gallery.technet.microsoft.com/scriptcenter/Enable-PSRemoting-Remotely-6cedfcb0
Network ports: 5985 (HTTP), 5986 (HTTPS)
(same as WinRM)
Слайд 49
PS Remoting – выполнение команд
Invoke-Command -ComputerName SRV1, SRV2
-ScriptBlock {Get-Process}
ComputerName принимает любой список PowerShell на вход
(Get-Content C:\Scripts\Servers.txt)
ScriptBlock
принимает как один командлет (с параметрами или без), так и несколько сразу.
{Get-Process mmc | Stop-Process},
{$myScript}
-FilePath {C:\Scripts\TestScript.ps1}
Слайд 50
PS Remoting – RunAs
Invoke-Command … -Credential:
(Get-Credential)
$cred, где $cred
= Get-Credential
Слайд 51
PS Remoting - Sessions
Command completion works even if
cmdlets aren’t installed at your box.
Get-Help, Get-Command works against
remote cmdlet set.
Less typing, commands are shorter – same as you’d run them locally.
Слайд 52
PS Remoting – Session cmdlets
Enter-PSSession
Exit-PSSession
Permanent sessions for Invoke-Command
cmdlet:
$S = New-PSSession $ComputerName
Invoke-Command -Session $S -ScriptBlock {Start-Job -ScriptBlock
{$Script}}
Слайд 53
PS Remoting – Background Jobs
Run command as a
job:
Invoke-Command SRV1 -ScriptBlock {(Get-ChildItem C:\ -Recurse).Count} -AsJob
Grab the result:
Get-Job
-Id 2 | Receive-Job
Useful for long operations, especially with multiple computers.
Слайд 55
Windows Remote Management: Tools
Tools, which are useful to
any network administrator in Windows-based infrastructure.
Слайд 56
Administrative shares
“Hidden” networks share
Its name ends with “$”
sign. Windows Explorer and “net view” command don’t show
such network shares.
One for each logical volume:
C$, D$, E$ etc.
admin$ - %SYSTEMROOT%
print$ - contains printer objects
ipc$ - not a part of a file system. Used for inter-process communication
By default, accessible by administrators only.
Слайд 57
MMC
Microsoft Management Console – GUI which hosts many
administrative tools to manage your machines locally and remotely.
Installed
at each Windows PC starting from NT4.0
Many snap-ins ship separately
Remote Server Administration Tools
Exchange Management Console
DPM Administration Console
Kaspersky Security Center
Слайд 58
MMC snap-ins
Standard Microsoft snap-ins located in “Control Panel\All
Control Panel Items\Administrative Tools”
Most useful for you – “Computer
Management”
You can create your own set of snap-ins and save as a single file
Слайд 59
Remote registry
Depends on “Remote Registry” service
Use common regedit.exe
tool
File -> Connect network registry
Слайд 60
Built-in command-line tools
tasklist/taskkill
/s
shutdown
/m
netsh
-r
w32tm
/computer
Слайд 61
Sysinternals PsTools
PsExec - execute processes remotely
PsFile - shows
files opened remotely
PsGetSid - display the SID of a
computer or a user
PsInfo - list information about a system
PsPing - measure network performance
PsKill - kill processes by name or process ID
PsList - list detailed information about processes
PsLoggedOn - see who's logged on locally and via resource sharing (full source is included)
PsLogList - dump event log records
PsPasswd - changes account passwords
PsService - view and control services
PsShutdown - shuts down and optionally reboots a computer
PsSuspend - suspends processes
Слайд 62
Вопросы?
Любые по рассмотренным темам.