ISA — Export rules

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

#---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, решил поработать с ним через 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

Опубликовано в ISA, PowerShell, Practice, Scripting. Комментарии к записи Get-ISAArray отключены

Scripting Games 2007, Event 3

Закончились Scripting Games 2007. Я в них попробовал поучаствовать в категории PowerShell Advanced.

Первые 2 задания я просто пропустил, на третьем сделал дурацкую ошибку из за того что невнимательно прочитал задание… Но зато на остальных собрался, и далее ни одного промаха 🙂 Учитывая моё позднее начало, задачей максимум для меня было — получить сертификат of achievement, выдающийся любому набравшему 60 очков. Я набрал 75 🙂 Помоему неплохо 🙂
И к сожалению я был единственным представителем России (была правда еще пара россиян в конкурсе по VBS)… Надеюсь в следующем году нас будет больше.

Впрочем победа в любом случае определялась не очками, и не призами. Самым интересным было участие 🙂 В играх были не очень сложные (по крайней мере для PoSH;)), но интересные задачки. Попробую рассказать о некоторых тут. Начну со 3го задания (первые 2 я не решал, потом попробую вернуться).

Задача: Надо было расчитать сдачу с $50 бумажки, и разложить её по банкнотам и монетам.
Например если на сдачу надо выдать $30.65 то необходимо показать следующее:
3 $10 bills — $30.00
2 quarters — $0.50
1 dime — $0.10
1 nickel — $0.05
Скрипт должен запрашивать значение от 0.01 до 50, и выводить сдачу с него. Я забыл вычесть значение из 50, и разбирал введенное число сразу 😦 Но тем неменее вот моё решение:

#инициализируем хеш таблицу с названиями штатовских номиналов монет и банкнот и их значениями в центах
$types=@{"Pennys"=1;"Nickels"=5;"Dimes"=10;"Quarters"=25;"Ones"=100;"Fives"=500;"Tens"=1000}

#сортируем по значениям
$types=$types.GetEnumerator()|sort value -desc

#инициализируем хеш с результатами
$result = @{}

#спрашиваем у пользователя значение и умножаем его на 100 чтоб получить количество центов (считать проще в них). 
#Тут же я бы и вычел их из $50, будь я повнимательнее ;) Ну да черт с ним, главное что я знаю что могу это решить ;)
$change=100*(read-host "Enter change value")

#выводим количество сдачи
write-host "Change returned: $($change/100)"

#хитрый one-liner для подсчета результатов :) Попробую разобрать по частям :)
#Пока выдали не всю сдачу...
#while ($change -ne 0) {
#Для каждого элемента $types...
#$types.getenumerator()|%{
#пока сдача больше номинала текущей монеты/банкноты ($_ - в нашем случае элемент $types)
#while($change -ge $_.value){
#добавляем в соответствующее монете/банкноте значение $result еденичку, вычитаем номинал из $change
#$result[$_.name]++;$change-=$_.value}}}
while ($change -ne 0) {$types.getenumerator()|%{while($change -ge $_.value){$result[$_.name]++;$change-=$_.value}}}

#Ну и выводим результаты :)
"Tens","Fives","Ones","Quarters","Dimes","Nickels","Pennys"|%{write-host "$($_): $($result[$_])"}
Опубликовано в PowerShell. Комментарии к записи Scripting Games 2007, Event 3 отключены

Windows Vista Dream PCs

Подборка классных, новейших PC с Vista на Windows Marketplace. Тем кто планирует покупку нового PC и не стеснён в средствах — смотреть обязательно. Ну а также желающим пооблизыватся 😉


… и множество других.

Опубликовано в Uncategorized. Комментарии к записи Windows Vista Dream PCs отключены

Windows Home Server beta 2

Прошу прощения за отсутствие постов, последнее время был немного занят 🙂 Повезло поучавствовать в тестировании Windows Home Server. Сейчас уже открыта публичная бета.

Если вкратце — это версия Windows 2003 для дома. Взяв за основу старый (относительно :)), добрый 2к3, Майкрософт подправила его для исполнения обязанностей домашнего сервера. Конечно часть функционала была урезана, например возможность быть членом домена или домен контроллером, но так же немало и добавилось. Например просто превосходная система single instance backup всех домашних компьютеров. Архивирование происходит на кластерном уровне, и ниодин кластер не резервируется дважды. Например если у вас есть пара систем, общий обьем данных на которых 400гб, можно иметь несколько бекапов обоих систем (последние 3 дня, неделю назад, месяц назад) которые будут занимать порядка 200-300гб.
Вторая главная фича — это общие папки с возможностью дублирования данных, причем независимо сколько дисков и какого размера установлены на сервер — все они будут использоватся как единый большой диск с данными. Включая дублирование не приходится заморачиватся проблемой откуда и куда, — достаточно поставить галочку 🙂 При желании можно добавлять или удалять жесткие диски (в том числе и внешние), хранилище будет масштабироватся соответственно.
Кроме того присутствуют еще несколько фич типа media streaming, доступ через веб к общим папкам, возможность подключатся к рабочему столу домашних компов через страничку Home Server'а, единый домашний Security center, и т.д.
Настраивается всё это элементарно, — справится любой кто справляется с повседневной работой в windows xp например 🙂
Но не стоит думать что сервер предназначен только для обычных пользователей с несколькими компами. Внутри находится 2k3 сервер с огромными возможностями. Я например поднял на своем Home Server'е сервер виртуальных машин, и держу irc-бота. Ну и других применений найду массу 🙂
Продаватся он будет в 2х вариантах — предустановленным на спецящик, либо отдельно для желающих установить самостоятельно на какойнить старый комп. По поводу цены ничего конкретного пока сказать нельзя, но вродебы стоить оно будет как обычный low-end десктоп.

Сейчас бета 2 уже доступна, но предложения ограниченны. Желающие потестировать — http://blogs.technet.com/eldar/archive/2007/02/12/640392.aspx

Опубликовано в Uncategorized. Комментарии к записи Windows Home Server beta 2 отключены