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

29.4.2008

AD Domains

Рубрика: Learn, PowerShell, Practice, Scripting, Tips — Xaegr @ 15:42

Продолжая тему Active Directory и PowerShell, приведу несколько команд (точнее методов .Net), которые бывают полезны в скриптах.

Серьезный, “продакшн” скрипт, не должен требовать указывать ему имя домена, а использовать по умолчанию домен того компьютера на котором он запущен. А как его определить? Вызвать статический метод GetCurrentDomain() класса System.DirectoryServices.ActiveDirectory.Domain:

(далее&hellip ;)

28.4.2008

Set-AdProperty

Рубрика: Learn, PowerShell, Practice, Scripting, Tips — Xaegr @ 15:44

Сегодня из общения с Пашей Дугаевым “узнал” что людям “иногда” бывает нужно задать из PowerShell атрибут какого нибудь объекта в Active Directory :) . Процесс не сложный, но в PowerShell 1.0 не очень “красивый”. Поэтому для удобного использования стоит завернуть его в такую вот функцию:

(далее&hellip ;)

26.3.2008

PowerGUI Console

Рубрика: Learn, PowerGui, PowerShell, Practice, Scripting, Tips — Xaegr @ 14:18

pg

А знаете ли вы какой классный инструмент раздается нахаляву под именем PowerGUI? ;) Как выясняется некоторые даже не представляют :)

PowerGUI это не только классный скриптовый редактор, это еще MMC-подобная консоль управления, в которой весь функционал, от отображения узлов дерева и списков, и до выполняемых над ними действий построен на PowerShell ;)

Итак, один из множества вариантов применения:

(далее&hellip ;)

14.3.2008

ConvertFrom-MimeString

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

MVP по Exchange, и просто хорошему человеку Павлу Нагаеву (кстати рекомендую подписаться на его блог) понадобилось в скрипте привести заголовок сообщений из MIME в читабельный вид. Дело в том что заголовки сообщений на русском языке хранятся в виде подобном этому:

=?windows-1251?B?x+Dq4Ocg8uXr5fTu7eA=?=

Поэтому родилась вот такая вот функция:

function ConvertFrom-MimeString ([string[]]$Strings=@()) { foreach ($Text in ($Strings + @($input))) { if ($Text -match "=\?(?<Encoding>.+?)\?B\?(?<Text>.+)\?=") { Write-Debug "Converting from $($matches.Encoding)…" $Bytes = [convert]::FromBase64String($matches.Text) [System.Text.Encoding]::GetEncoding($matches.Encoding).getString($Bytes) } } }

Можно передать ей строку как аргумент, а можно и из конвейера:

mime

27.2.2008

Поиск дубликатов файлов

Рубрика: Learn, PowerShell, Practice, Scripting, Tips — Xaegr @ 9:46

Часто бывает надо :) Решается на PowerShell в 1 строчку :)

По каталогу рекурсивно отбираются файлы у которых одинаковое имя и размер:

[PS C:...Temp] Dir -rec | group name,length | where {$_.count -gt 1} Count Name Group —– —- —– 2 file2.txt, 62804 {file2.txt, file2.txt} 2 file3.txt, 57860 {file3.txt, file3.txt}

Полные пути дубликатов, подряд:

[PS C:...Temp] Dir -rec | group name,length | ?{$_.count -gt 1} | Select -Expand group | ft fullname FullName ——– C:RootTempfile2.txt C:RootTempFolder6file2.txt C:RootTempfile3.txt C:RootTempFolder6file3.txt

Группами дубликатов:

[PS C:...Temp] dir -rec | group name,length | ? {$_.count -gt 1} | %{$_ | select -expand group | ft fullname} FullName ——– C:RootTempfile2.txt C:RootTempFolder6file2.txt FullName ——– C:RootTempfile3.txt C:RootTempFolder6file3.txt

Использованные сокращения (все присутствуют в PowerShell по умолчанию) :) -

  • dir = get-childitem
  • -rec = -recurse
  • group = group-object
  • ? = where-object
  • % = foreach-object
  • select = select-object
  • ft = format-table
Older Posts »

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