PowerShell и другие скрипты

15.2.2008

Вебкаст о практическом применении PowerShell

Рубрика: ISA, Learn, PowerShell, Practice, Scripting, Tips — Xaegr @ 11:41

welcome

Приглашаю всех желающих посмотреть вебкаст :)

Краткий обзор возможностей Windows PowerShell и практические примеры применения

20 февраля 2008 г. (среда)
12:00 — 13:00 (GMT+03:00 Москва)
Рекомендуемая аудитория: ИТ-специалисты

В этой веб-трансляции мы будем говорить о том, чем Powershell может помочь ИТ-специалисту в его повседневной работе. На протяжении  веб-трансляции  основное внимание будет уделено приобретению практических навыков работы с Powershell.
Так же будут освещены следующие темы:
• Обзор полезных дополнений для PowerShell от сторонних производителей
• Работа с COM объектами на примере управления ISA Server
• Способы использования системных .Net объектов
• Примеры работы с WMI подсистемой
• Сравнение скриптов PowerShell с аналогами на VB Script

Докладчики:
Андрей Бешков – эксперт по информационной инфраструктуре (Microsoft)
Василий Гусев – ваш покорный слуга :)

В касте будет много интересных (надеюсь :) ) примеров скриптов для решения разных административных задач. Ну и кроме того буду рад ответить на вопросы :)

Записываться тут - перед началом трансляции вам придет ссылка для подключения. Рекомендую подключиться немного раньше начала, чтобы при необходимости установить Live Meeting 2007 Client, либо поставить его заранее.

9.3.2007

Get-ISARules

Рубрика: ISA, PowerShell, Practice, Scripting — Xaegr @ 16:37

Кроме резервирования правил иногда бывает полезно делать отчеты по ним, для того чтобы представить начальству, или чтобы самому получше ориентироватся.Точное определение правила в отчете не нужно, достаточно показать основные характеристики и краткое описание.

Эта функция берет на вход объект $isa (isa array, можно получить с помощью Get-IsaArray)

function Get-ISARules($Isa)
{
	$Isa.ArrayPolicy.PolicyRules |
	?{!$_.system} |
	select Order, Name, Enabled,
	@{Name="Rule Type"; Expression={switch($_.type){0 {"Access"}; 1 {"Server Publishing"}; 2 {"Web Publishing"}}}},
	@{Name="Action"; Expression={if($_.action -eq 0){"Allow"}else{"Deny"}}}, EnableLogging, Description
}

Используем так:

PS D:\PowerShell> $isa = Get-ISAArray “IsaServ”
PS D:\PowerShell> $rules = Get-ISARules $isa
PS D:\PowerShell> $rules | ConvertTo-Html | Set-Content report.html
PS D:\PowerShell> .\report.html

Или можно просто посмотреть в консоли:

PS D:\PowerShell> $rules | Format-Table -AutoSize

Order Name                                 Enabled Type           Action EnableLogging Description
—– —-                                 ——- —-           —— ————- ———–
    1 ALLOW ALL                              False Access         Allow           True Временное правил…
    2 RDP-Temporary                          False Publishing     Allow           True Временное правил…
    3 Allow Remote Management                 True Access         Allow           True Позволяет подклю…
    4 RemoteTS-Test                           True Access         Allow           True Подключение к уд…
    5 DNS query                               True Access         Allow           True Разрешает DNS за…
…

Ну и естественно можно всячески фильтровать и изменять вывод, например:

PS D:\PowerShell> $rules |where {$_.enabled}| Format-Table name, description

Тут лучше поиграться самостоятельно :)

27.2.2007

ISA - Export rules

Рубрика: ISA, PowerShell, Practice, Scripting — Xaegr @ 12:39

По мотивам предидущей записи, набросал скриптик для регулярного экспорта конфига, и рулезов отдельно:

#---ExportIsaRules.ps1---#
$ExportFolder="E:\ISA_Backups"
$date = get-date -f "yyyy-MM-dd"
$comp = $env:computername
$root = New-Object -com "fpc.root"
$ISA = $root.Arrays.Connect("")
$ISA.ExportToFile("$ExportFolder\$comp-Full-$date.xml",0,"","Full export, $date")
$ISA.ArrayPolicy.ExportToFile("$ExportFolder\$comp-Policy-$date.xml",0,"","Policy export, $date")
#---ExportIsaRules.ps1---#

Суем скрипт в ExportIsaRules.ps1, а в шедулер добавляем:

C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -NoProfile -NonInteractive -Command E:\Scripts\BackupISALogs.ps1

Get-ISAArray

Рубрика: ISA, PowerShell, Practice, Scripting — Xaegr @ 10:13

Сейчас решал одну задачку по ISA, решил поработать с ним через PoSH, вот чего нарисовал походу :)

Небольшая функция для подключения к ISA Server:

Function Get-ISAArray ([string]$Name=”*”)
{
	$Root = New-Object -comObject “FPC.Root”
	if( $root.Arrays.Count -gt 0)
	{
		$root.Arrays|?{$_ -like $name}
	}
	else
	{
		if ($name -eq “*”)
		{
			$name = read-host “Enter name of the ISA array”
		}
		$root.Arrays.Connect($name)
	}
}

Подключаемся:

$isa = Get-ISAArray MyISAServer

Смотрим что можно с ним сотворить:

PS D:\PowerShell> $isa | Get-Member

   TypeName: System.__ComObject#{cfceec97-7bc5-4890-aa02-35e4e48304a6}

Name                           MemberType Definition
—-                           ———- ———-
ApplyChanges                   Method     void ApplyChanges (bool, bool)
CancelWaitForChanges           Method     void CancelWaitForChanges ()
CanImport                      Method     bool CanImport (IUnknown, bool)
DiscardChanges                 Method     void DiscardChanges ()
…
AdminSecurity                  Property   IFPCAdminSecurity AdminSecurity () {get}
AdminVersionMajor              Property   int AdminVersionMajor () {get}
AdminVersionMinor              Property   int AdminVersionMinor () {get}
Alerts                         Property   IFPCAlerts Alerts () {get}
ArrayPolicy                    Property   IFPCArrayPolicy ArrayPolicy () {get}
Cache                          Property   IFPCCache Cache () {get}
ChangesMade                    Property   bool ChangesMade () {get}
…

Ну и дальше делаем чегонить нужное… :)

PS D:\PowerShell> $isa.ArrayPolicy.PolicyRules | Format-Table name, enabled, descr* -AutoSize

Name                                 Enabled Description
—-                                 ——- ———–
DNS query                               True Разрешает DNS запросы в интернет. Необходимо для
Microsoft Newsgroups                   False Необходимо для возможности чтения групп новостей
Exchange 2003 Publishing SMTP Server    True Необходимо для отправки/получения почты в/из инт
Windows messenger                      False Временное правило для тестирования Windows Messe
Lotus Sametime                         False Временное правило для тестирования Lotus Sametim
…

Вроде доступно всё тоже что и через гуевую консоль и даже чуть больше :)

PS: Необязательно работать с самого ISA сервера, достаточно поставить консоль управления на клиентском компе, и указать имя сервера при вызове Get-ISAArray

Заведите блог на WordPress.com.