четверг, 31 июля 2008 г.

Написал функцию PowerShell для разбора аргументов командной строки

### Функция разбора параметров командной строки
### На входе $arguments - массив параметров командной строки
### На выходе коллекция - "Команда","Аргумент команды"
### Формат параметров командной строки /Command='Parameter'
##############################################################

function parse_params($arguments) {
$out=@{}
foreach ($arg in $arguments) {
[string] $str_to_parse=$arg
$splited_str=$str_to_parse.Split('=')
if ($splited_str.Length -gt 2) {
Write-Host "В параметре команды присутствует знак '='! Значение параметра после этого знака будет отброшено!"
}
else {
#Если указан признак команды '/' - обрабатывать
if ($splited_str[0].Contains('/') -eq $TRUE) {
if ($splited_str.Length -eq 1) {
$out.add($splited_str[0],'') #Если команда указана без параметра
}
else {
$out.add($splited_str[0],$splited_str[1])
}
}
}
}
return $out
}

Передача параметров в скрипт PowerShell

Параметры командной строки сохраняются в массиве $args[]
Например при вызове: powershell.exe c:\myscript.ps1 -a:arg1 -b:arg2 -c:arg3
В массиве будет: args[0]="-a:arg1", args[1]="-b:arg2", args[2]="-c:arg3"
Сам массив можно разбирать с помощью, например foreach:

foreach ($arg in $args) {
Write-Host $arg
}

Замечание: При вызове, например с таким параметром: /path:"path to file"
Получится:
args[0]=/path:path
args[1]=to
args[2]=file

А при вызове /path:'path to file'
args[0]=/path:path to file

среда, 30 июля 2008 г.

Скрипт power shell, определюящий запущена ли служба ntpd на удаленных компьютерах

#### Функция определения максимальной длины имени компьютера
function get_max_length($computers){
$max_length=0
[string] $name=""
foreach ($computer in $computers) {
$name=$computer.Name
if ($name.length -gt $max_length) {
$max_length=$name.length
}
}
$max_length
}
############################################################

### Функция, формирующая строку из пробелов количеством $spc
function add_spaces($spc) {
$spaces=''
if ($spc -gt 0) {
for ($i=1; $i -le $spc; $i++) {
$spaces=$spaces+' '
}
}
$spaces
}
############################################################

Clear-Host #Очистка окна вывода
$out_exp="Write-Host " #Переменная, определяющая тип вывода результата работы скрипта
$local_pc=Get-WmiObject -Class Win32_ComputerSystem
$cred=Get-Credential #Получение авторизационных параметров
$pc_list=Get-QADComputer #Получение списка компьютеров в домене

##### Формирование заголовка таблицы #######################
$num_spaces=get_max_length($pc_list)
$num_spaces1=$num_spaces-13
$table_hdr=' "Computer Name'+(add_spaces($num_spaces1))+' IP Address NTPD Status"'
$res_hdr=$out_exp+$table_hdr
Invoke-Expression $res_hdr
############################################################

foreach ($pc in $pc_list) {
#Проверим с помощью ping, подключен ли компьютер к сети
$ping = Get-WmiObject -Class Win32_PingStatus -Filter "Address='$($pc.Name)'"
if ($ping.StatusCode -ne 0)
{
#Компьтер не доступен по ICMP
Write-Host -ForegroundColor Red "$($pc.name) - Not Reachable via ICMP!"
}
else {
#Если компьютер доступен по ICMP, проверим - запущен ли на нем сервис RCP
if ($local_pc.Name -eq $pc.Name) {
#Если локальный ПК, то -Credential использовать нельзя
$pc_role="Local PC"
#$exp - строковое значение команды Get-WmiOnject
$exp='Get-WmiObject -Class Win32_Service -ComputerName $pc.Name -Filter "name='+"'rpcss'"+'" -ErrorAction SilentlyContinue'
$exp_ip='Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName $pc.Name'
$exp_ntpd='Get-WmiObject -Class Win32_Service -ComputerName $pc.Name -Filter "name='+"'NetworkTimeProtocol'"+'" -ErrorAction SilentlyContinue'
}
else {
$pc_role=$pc.ComputerRole
$exp='Get-WmiObject -Class Win32_Service -ComputerName $pc.Name -Credential $cred -Filter "name='+"'rpcss'"+'" -ErrorAction SilentlyContinue'
$exp_ip='Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName $pc.Name -Credential $cred'
$exp_ntpd='Get-WmiObject -Class Win32_Service -ComputerName $pc.Name -Credential $cred -Filter "name='+"'NetworkTimeProtocol'"+'" -ErrorAction SilentlyContinue'
}
#Вызов команды PS как значения строковой переменной.
$result=Invoke-Expression $exp
if ($result.State -eq "Running") {
#Собственно здесь уже можно работать с объектами wmi.
#Write-Host "RPC Service Running on $($pc.Name). Computer Role is $($pc_role)"
#Формируем строку для выыода в таблицу
$dop_spc=$num_spaces-$pc.Name.Length
$name_row=' "'+$pc.Name+(add_spaces($dop_spc))
#Определение, запущена ли служба ntpd
$ntpd=Invoke-Expression $exp_ntpd
if ($ntpd.State -eq "Running") {
#Write-Host "NTPD is Running"
$ntpd_row=' RUN'
}
else {
#Write-Host -ForegroundColor Red "NTPD is NOT Running!"
$ntpd_row=' NOT'
}
#Определение IP адреса удаленного компьютера
$net_adapters=Invoke-Expression $exp_ip
foreach ($net_adapter in $net_adapters) {
if ($net_adapter.IPEnabled -eq $TRUE) {
#Write-Host $net_adapter.IPAddress
$dop_spc=14-$net_adapter.IPAddress[0].Length
$ip_row=$net_adapter.IPAddress+(add_spaces($dop_spc))
#Здесь нужно сформировать результирующую строку для вывода в таблицу
$result_row=$out_exp+$name_row+' '+$ip_row+$ntpd_row+'"'
Invoke-Expression $result_row
}
}
}
else {
Write-Host -ForegroundColor Red "RPC Service NOT Running on $($pc.Name)"
}

}
}

понедельник, 28 июля 2008 г.

Инструментарий Windows Power Shell

Собственно, что такое Windows Power Shell можно прочитать здесь:

Энн Грабб. Широкие возможности PowerShell

Да и с помощью гуглинга можно "нарыть" достаточно дополнительной инфы.
Здесь же я буду отмечать только то, что выполнялось мной в повседневной работе. Так сказать "Записки на полях".

Сразу порекомендую два дополнительных (бесплатных!) продукта от компании quest:
PowerGUI и Management Shell for Active Directory.

Собственно пока и все. Продолжение следует

----
Получение списка компьютеров в домене
$collection=Get-QADComputer
foreach ($item in $collection) {
[string] $var=$item.computername
$var.Remove($var.Length-1,1)
}
Прим. Get-QADComputer - функция из Management Shell for Active Directory

---
Получение IP адресов компьютеров домене
$collection=Get-QADComputer
foreach ($item in $collection) {
[string] $var=$item.computername
$var=$var.Remove($var.Length-1,1)
$net=Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName $var -Filter IPEnabled=True
foreach ($ip in $net) {
Write-Host $var, $ip.IPAddress
}
}
В данном случае не обрабатывается ситуация, когда запрашиваемый с помощью объекта WMI компьютер выключен, или не подключен к сети. В такой ситуации выдается сообщение об ошибке:
Сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA)
В строке 5, позиция 21
$net=Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName $var -Filter IPEnabled=True

Для отключения сообщений об ошибках необходимо использовать параметр -ErrorAction SilentlyContinume для Get-WMIObject.

Вот пример подобного скрипта

Аналогично я переписал вот такой вот скрипт:
Clear-Host #Очистка окна вывода
$cred=Get-Credential #Получение авторизационных параметров
$pc_list=Get-QADComputer #Получение списка компьютеров в домене
foreach ($pc in $pc_list) {
#Проверим с помощью ping, подключен ли компьютер к сети
ping.exe $pc.Name -n 1 | Out-Null
if ($LASTEXITCODE -ne 0)
{
#Компьтер не доступен по ICMP
Write-Host -ForegroundColor Red "$($pc.name) - Not Reachable via ICMP!"
}
else {
#Если компьютер доступен по ICMP, проверим - запущен ли на нем сервис ICMP
$result=Get-WmiObject -Class Win32_Service -ComputerName $pc.Name -Credential $cred `
-Filter "name='rpcss'" -ErrorAction SilentlyContinue
if ($result.State -eq "Running") {
Write-Host "RPC Service Running on $($pc.Name)"
}
else {
Write-Host -ForegroundColor Red "RPC Service NOT Running on $($pc.Name)"
}

}
}

Все, в принципе работает, но нервирует постоянное открытие окна командной строки! С помощью "гуглинга" нашел следующую статью.
И, пользуясь рекомендациями переписал скрипт:


Clear-Host #Очистка окна вывода
$cred=Get-Credential #Получение авторизационных параметров
$pc_list=Get-QADComputer #Получение списка компьютеров в домене
foreach ($pc in $pc_list) {
#Проверим с помощью ping, подключен ли компьютер к сети
$ping = Get-WmiObject -Class Win32_PingStatus -Filter "Address='$($pc.Name)'"
if ($ping.StatusCode -ne 0)
{
#Компьтер не доступен по ICMP
Write-Host -ForegroundColor Red "$($pc.name) - Not Reachable via ICMP!"
}
else {
#Если компьютер доступен по ICMP, проверим - запущен ли на нем сервис ICMP
$result=Get-WmiObject -Class Win32_Service -ComputerName $pc.Name -Credential $cred `
-Filter "name='rpcss'" -ErrorAction SilentlyContinue
if ($result.State -eq "Running") {
Write-Host "RPC Service Running on $($pc.Name)"
}
else {
Write-Host -ForegroundColor Red "RPC Service NOT Running on $($pc.Name)"
}

}
}


Использование строковой переменной, в качестве команды PowerShell
Для этих целей используется команда Invoke-Expression, например:
Clear-Host
$proc="explorer"
$exp='Get-Process $proc'
$result=Invoke-Expression $exp


Достает длинный тайм-аут при запросе удаленных ПК, на которых не активна RPC.
По этому поводу читаем тут :-(








четверг, 24 июля 2008 г.

Давно не было музычки


Вот. Накопал чудесный саунд от "The Republic Tigers", альбом "Keep Color" (2008).
Душевно, хороший музычка.

Интересная книжица

Стансислав Гроф "Духовный кризис: Когда преобразование личности становится кризисом"

Аннотация:
Сегодня все большее число людей, вовлеченных в процесс личностной трансформации, испытывает эпизоды духовного кризиса, когда процесс духовного роста и перемен становится хаотическим и захлестывающим. В этой антологии выдающиеся психологи, психиатры и духовные учителя задаются вопросом о природе духовного кризиса, о связи между духовностью, безумием и целостностью. В каких формах проявляется духовный кризис? Какие надежды и разочарования внутренне присущи духовной практике? Чем друзья, семья и профессионалы могут помочь людям, находящимся в духовном кризисе?

Лежит здесь

среда, 16 июля 2008 г.

Навеяло

Даже если над твоей головой пасмурное небо, Солнце все равно для тебя светит. Смотри на него своим сердцем.
Не знаю, то ли сам придумал, то ли где-то из памяти вытащил.

Замечательная музычка

Канадский вокалист, композитор и музыкант - Кэвин Джеймс Лабри (Kevin James LaBrie), родившийся в 1963 году в Онтарио со школьных годов начал музицировать для собственного удовольствия. В десять лет он уже вместе со своим отцом, братом и дядей играл на барабанах в парикмахерской (!). В подростковом возрасте Лабри выбрал для себя направление рок-музыки, участвовал в нескольких группах. Позже, набравшись опыта и посещая уроки вокала, записав два альбома с канадскими группами, он становиться вокалистом Нью-Йоркской группы Dream Theater. Первый альбом с которой он записывает в 1992 году. В 2008 году выходит новый сольный альбом - «Prime Cuts». Рекомендую любителям красивого классического рока.

Хорошо сказано

Однажды одного чемпиона мира по бильярду попросили объяснить причину его успеха и, почему никто не может у него выиграть. Тот ответил: «Все очень просто. Пока другие играют со мной, я в это время играю в бильярд».

пятница, 11 июля 2008 г.

Еще олдырей


"Object 47" - 11 по счету и самый свежий (2008) альбом от британских нью-вэйверов Wire.
И свежо, и дух New-Wave присутствует.
Рекомендую!

Шесть степеней свободы отношений

Игральный кубик своими шестью сторонами выражает идею шести степеней свободы, и в то же время, он моделирует универсальный Закон Семи, которому подчиняется любое развитие –ход нашей жизни, история брачных отношений, реализация всевозможных проектов любой человеческой деятельности.
Остается только определить, какое количество очков, какому направлению соответствует. Сделать это не так уж и сложно. Возьмем для рассмотрения обычный повседневный день.
1. Ты просыпаешься. Поднимаешься. Начинаешь свой день. Твое первое проявление и заявление о себе миру. В момент пробуждения ты один и индивидуален. Ты пока весь в себе. Первое твое движение – вверх, из сна в явь, из ночи в день, из лежачего, горизонтального положения в вертикальное. Подъем. Единица. Ось позвоночника.
Стало быть, единица – это начало, первые шаги, создание и проявление активности. Если провести аналогию с музыкальной гаммой, то она соответствует ноте ДО.
ДО – первые буквы латинского слова Dominus, что в переводе означает – хозяин.
Возьмем пример из личных отношений. Ты познакомился с девушкой, и вы начинаете встречаться, вступая в первый этап – зарождения и роста ваших отношений.
2. Ты уже встал. Поднялся. Ты стоишь. И теперь ты выступаешь - идешь вперед - вступаешь во взаимодействие с окружающими тебя реалиями. Как бы соединяешься с ними, сочетаешься что ли. В том и проявляется принцип парности – диалог с миром.
Это и есть двойка. Лоб.
Что касается тебя и девушки, то после определенного количества встреч вы приходите к необходимости выбора (в вас есть что-то общее, но в то же время вы такие разные. Или наоборот, вы такие разные, но в вас есть и что-то объединяющее) – продолжить отношения дальше, или расстаться.
Подобная позиция естественным образом предполагает некоторое изменение твоего поведения в силу его неизбежного соприкосновения с другими индивидуальными траекториями. И, поскольку они влияют на тебя, ты совершаешь ряд определенных действий, исходя из необходимости переработки новой ситуации.
Ты избавляешься, устраняешь, уточняешь. Избавляешься от прежних стереотипов, устраняешь лишнее, уточняешь свою роль.
Двойка – позиция нестабильная. Нота РЕ. REcessus – удаление. Реорганизация.
3. Далее - управляя – вправо, продолжая и развивая траекторию самопроявления, формируя новые стратегии и, внося изменения в опыт прошлого. Строительство и устроительство дня. Тройка. Правое полушарие.
Если вы с подругой достигаете соглашения, вы переходите на данный этап – согласованности и стабильности. Вы решаетесь на то, чтобы жить вместе. Таким образом, третий этап можно обозначить как период стабилизации, фиксации, укрепления.
Нота МИ. Mixtura – сочетание, соединение.
4. Строение укреплено и обжито. Следы следствий ведут назад в тыл - затылок. Постигнутое пространство освоено. Мысль оформилась в кристалл структуры и опыта. Четверка. Затылок. Но, с другой стороны, нам хорошо известно, что у любой структуры, как только она достигает предела своей устойчивости, появляется тенденция к распаду. Таковой на внешнем уровне может проявиться, прорваться в виде «случая» или «роковых обстоятельств».
Вы долго живете вместе и кажетесь прекрасной парой. Но вот кто-то из вас влюбляется в другого или оказывается вовлеченным в вихрь экстраординарных событий. И ваше будущее оказывается под угрозой.
Четверка – это нарушение, угроза, испытание. Нота ФА. FAtum.
5. Переформировавшаяся структура, получает способность к осуществлению новой акции. Акция формы и есть информация. Количество, доведенное до предела, переходит в качество, статика - в динамику. Таким образом, осуществляется прорыв, переход на новый виток. Активность перемен. Переформирование формы – трансформация. Движение влево, вспять. Пять. Левое полушарие – кладовая информации.
Если вы выдерживаете испытание, то переходите на этот этап, знаменующий собой процесс исцеления, обновления, адаптации. Все проблемы разрешаются, а раны заживляются.
Нота СОЛЬ. SOL – СОЛнце.
6. Круг завершен. Солнце склоняется. Творение дня совершилось. Свершение свершено. Из вертикали верха ты погружаешься в горизонт ложа, вниз, из яви в сон, из дня – в ночь. Окончено шествие. Шесть. Ось позвоночника.
Что касается ваших отношений, то они либо тихо, мирно, философски заканчиваются, либо переходят на более высокий уровень – виток и развиваются дальше. Нота ЛЯ. Labor – завершение. Labente dei – на склоне дня.
7. Нейтральность. Место отдыха, анализа всего происшедшего и готовности к чему-то новому. Нота СИ. Silens – покой, тишина.

Взято отсюда Э.Цветков "Конструктор реальности"

четверг, 10 июля 2008 г.

Что послушать на ночь глядя

Варкалось. Решил что-то ненавязчиво-легко-импровизационное послушать.
Выбрал Brazzaville, альбом 2008 года "21st Century". Отлично играют, черти. И драйвово, и мелодия есть. В общем, хорошо, душевно.

Наверное, мудро.

Если не знаешь, как поступать, просто отпусти ситуацию и дай ей возможность разрешиться самой, и то, что произойдет, будет единственно верным и идеальным для тебя на данный момент.

Взято отсюда: Э.Цветков "Конструктор реальности"

Нелохая музыка

Попала на ухо мне команда "Archive" со своим альбомом 2006 года "Lights". Можно сказать случайно.
Allmusic.com описывает их стиль, как Club/Dance, Trip-hop. К позитивному удивлению, на счет Club/Dance - приписка. Спокойная, даже может меланхоличная музычка.
Для фона - весьма и весьма подходит. Не грузит.

Отлично сказано

Талант - это способность обрести свою судьбу
(Томас Манн)

среда, 9 июля 2008 г.

О цинизме 2.

Вот тут девушка красиво отписала.

Радует, что я пока еще не законченный циник. Не радует, что скорее всего это временно.

Вообще такое понятие, как "здоровый цинизм" существует?

Коллайдер

Чумазики, преведы и прочие нервно курят в стороне.
Новая высадка моска в виде андронного коллайдера.
Говорят, он съест Землю.
Новая заморочка - после выхода фильма "Армагедон" тема с кометами/астероидами уже не будоражит домохозяек и умы общественных деятелей.
Ждем массовые демонстрации.

вторник, 8 июля 2008 г.

Еще музычка


На "1-м альтернативном" есть такая передача, мне и сама передача и ее название нравится - "Oldыри". Вот еще один олдырь, я бы сказал "Олдырыще". Peter Gabriel и его альбом Big Blue Ball. Петруха, так держать! Хотя стинговщиной слегка отдает. Хороший, добротный new age

понедельник, 7 июля 2008 г.

О comeback-ах

Зло это. Себе зло, и ей зло. Лучше забыть как-можно быстрее.
Заслужила ли она то слово, что вертится на языке? Или это я заслужил то слово, что сверлит моск и жалит самолюбие?

среда, 2 июля 2008 г.

Понравился альбомчик


Nick Cave and the Bad Seeds "Dig!!! Lazarus Dig!!!"

Есть еще порох в пороховницах.
Рекомендую любителям "легкого" андеграунда.