PowerShell в Orchestrator – Запуск x64, v4 PowerShell скриптов

Думаю, для тех, кто уже использовал System Center Orchestrator, не является секретом то что очень часто в процедурах приходится использовать скрипты PowerShell (или код C#, смотря что ближе, но сейчас не об этом). Однако, возможности Orchestrator в плане исполнения скриптов PowerShell местами ограничены. Так, например, Orchestrator использует только x86 версию PowerShell, да еще и версии 2, даже если установлен на Windows Server 2012 R2 где доступен PowerShell v4.

Удостовериться в этом можно выполнив такой код, и выведя результаты:

image

image

Разумеется, это вызывает проблемы если хочется воспользоваться возможностями новых версий PowerShell или использовать модули которые есть только в x64 версии. К счастью, для этой проблемы доступно несколько обходных решений.

Самый простой метод, это запустить PowerShell.exe, и выполнить скрипт в нём. Я модифицировал вышеприведённый код для использования этой возможности:

image

image

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

Другое решение, позволяющее добиться такого результата (и при этом сохранив вывод в должном качестве) – это воспользоваться PowerShell Remoting. При этом вовсе необязательно подключаться к другому компьютеру, можно подключиться и к localhost. Но сам Remoting конечно должен быть включен (например, командлетом Enable-PSRemoting). Вот что получается:

image

image

Обратите внимание, что нужно обязательно указать параметр –ComputerName, иначе профита не будет.

А что делать если необходимо выполнить достаточно большой скрипт, и при этом вернуть еще несколько переменных? Тут можно воспользоваться, например, встроенным типом данных PowerShell – Hashtable. Hashtable представляет из себя простой набор ключей и соответствующих значений.

image

На сегодня всё. Дальше будет больше Smile

Реклама
Опубликовано в Uncategorized. Метки: , , , . Комментарии к записи PowerShell в Orchestrator – Запуск x64, v4 PowerShell скриптов отключены

Teched 2012: Облака без бла-бла-бла v2012

Вот и пришло время очередного TechEd Russia — 2012. На этот раз я опять буду участвовать в докладе «Облака без бла-бла-бла», но теперь в названии уже есть «v2012» (код доклада — INF330). Помогать мне будет моя коллега из Microsoft Consulting Services — Елена Козылькова. Как и на предыдущем TechEd, доклад будет содержать минимум абстрактных и маркетинговых слайдов, зато в нём будет немало демонстраций и действительно интересного о том, почему SC Orchestrator является необходимым элементом «облаков» и других современных автоматизированных систем.

Важный момент — все процедуры оркестратора и скрипты, после доклада можно будет загрузить и использовать как основу для своих решений.

Разумеется, как и всегда, я буду очень рад услышать ваши вопросы. Задать их мне можно будет либо на сессии вопросов и ответов про System Center (INF 220RT), либо в любое другое время когда вы сможете меня поймать. Например я точно буду готов отвечать на ваши вопросы после своего доклада «Облака без бла-бла-бла«.

Опубликовано в Uncategorized. Комментарии к записи Teched 2012: Облака без бла-бла-бла v2012 отключены

Политики System Center Orchestrator с TechEd Russia 2011

На прошедшем TechEd Russia 2011, мы с Артуром Гаффановым в процессе нашего доклада «Интеграция продуктов System Center: облака без бла-бла-бла» показали много интересных демонстраций возможностей System Center Orchestrator.
В частности были следующие демки:

    Автоматическое добавление процессоров на виртуальные серверы по сигналу от System Center Operations Manager.

    Автоматическая очистка временных файлов на диске виртуального сервера если там заканчивается место, а если временных файлов было не много — увеличение виртуального диска и расширение раздела.
    Политика создающая Change Request в System Center Service Manager для тех компьютеров где требуется перезагрузка для установки обновлений и политика перезагружающая эти компьютеры после одобрения Change Request.
    Бонусная политика, уничтожающая виртуальные машины в ЦОД по команде из твиттера 😉

    Посмотреть запись доклада можно здесь.
    А если вы захотите что-то из этих политик применить у себя (разумеется адаптировав под свои задачи) или просто посмотреть на них более подробно, то можете загрузить файл экспорта отсюда. Обратите внимание, политики в формате Orchestrator RC, c Orchestrator Beta или Opalis они работать не будут. Зато скорее всего их можно будет импортировать в финальную релизную версию Orchestrator, когда она выйдет.

Опубликовано в Uncategorized. 3 комментария »

Новые русскоязычные ресурсы по PowerShell

Привет! К сожалению, в последнее время я несколько подзабросил свой блог. Впрочем скоро я снова начну писать, несколько интересных постов уже наготове Smile Но речь не об этом. Сообщество PowerShell не стоит на месте, и у нас появилось несколько новых русскоязычных ресурсов посвященных PowerShell. Знакомьтесь:

  • Скринкасты Юрия Лебедева о PowerShell – обучающее пособие для тех кому удобнее воспринимать информацию в формате видео.
  • Блог SHS (возможно знакомого многим по форумам), “еще один блог сисадмина” со всевозможными скриптами на PowerShell и другими интересными постами.
  • NETZ – Блог об администрировании Windows и не только, и конечно о PowerShell Smile
  • Заметки о PowerShell. Автор блога – Kazun, которого вы могли встретить в разделе скриптинга на русскоязычных форумах технет. В блоге приводятся интересные скрипты PowerShell, в том числе с активным применением C# и Win32API.
Опубликовано в Uncategorized. 4 комментария »

Invoke-SQL

Всем привет!

thumbnailCA2CQQEOСпасибо всем кто не отписался от моего блога несмотря на отсутствие новых постов в последнее время. У меня для вас есть кое что вкусное Smile

Я думаю большинству читателей моего блога, так или иначе приходится сталкиваться и взаимодействовать с серверами MSSQL, ведь большинстов современных серверных продуктов используют их для хранения данных. И я думаю что вам, так же как и мне, часто хотелось автоматизировать взаимодействие с этими хранилищами данных с помощью PowerShell. И Microsoft даже пошла нам на встречу выпустив SQL Server 2008 с интеграцией PowerShell. Это позволило нам автоматизировать настройку серверов SQL, но возможностей работы с данными содержащимися в базах к сожалению не прибавило. То же относится к недавно выпущенному MSSQL 2008 R2. А ведь казалось бы, нам нужно совсем немного – хотя бы простой командлет который смог бы принимать на вход SQL запрос, и возвращать данные не в текстовом представлении, как это делают osql.exe или isql.exe, а в виде объектов, со свойствами – столбцами. Аналогичный командлет на самом деле уже написала компания SoftwareFX, но он поставляется в составе их платного продукта PowerGadgets, который хоть и хорош сам по себе, но покупать его только для того чтобы удобно выполнять SQL запросы из PowerShell – просто нецелесообразно. Поэтому я решил написать собственный командлет (advanced function), с таким функционалом, являющийся на самом деле обёрткой над .NET классами для работы с SQL.

Читать далее…

Опубликовано в Uncategorized. Метки: , . 10 комментариев »

BitsTransfer

Я уже писал про командлеты для передачи файлов с использованием BitsTransfer (раз, два), но думаю стоит вспомнить о них еще разок. Дело в том что те посты писались по CTP3, а в релизе модуль и сами командлеты были переименованы из FileTransfer в BitsTransfer 🙂 Не ахти какое ужасное изменение, но лучше упомяну, а то те посты уже многих ввели в заблуждение 🙂 Итак, в релизе делаем так:
Import-Module BitsTransfer
Get-Command -module BitsTransfer

Ну и до кучи, небольшой ролик демонстрирующий основные возможности командлетов 🙂

bits

На момент написания этого поста релиз PowerShell 2.0 и этого модуля, доступен только на Windows 7 и Windows 2008 R2. Но уже скоро должен выйти пакет с PS 2.0 и обновленным BITS для всех остальных систем, начиная с XP.

Опубликовано в Uncategorized. Метки: , . Комментарии к записи BitsTransfer отключены

Текущий “залогиненный” пользователь

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

Итак, какие есть решения… А решений вроде бы немало. Во-первых – psloggedon.exe, прекрасная утилита от Microsoft SysInternals с отличными возможностями… но не для нашей задачи. Лучшее что она может – вывести список учетных записей выполнивших вход. Интерактивных и нет. Пользовательских и служб…

PS C:\root> psloggedon -l -x

loggedon v1.33 - See who's logged on
Copyright й 2000-2006 Mark Russinovich
Sysinternals - www.sysinternals.com

Users logged on locally:
     NT AUTHORITY\LOCAL SERVICE
     NT AUTHORITY\NETWORK SERVICE
     EURAZFIN\gusev
     EURAZFIN\sa1
     NT AUTHORITY\???????

А еще у неё какие то проблемы с юникодом… 😦 Придётся поискать другой метод. И он достаточно легко находится. На vbscript — http://blogs.msdn.com/alejacma/archive/2008/03/04/how-to-get-the-logged-on-user-with-wmi-vbscript.aspx. Здорово да? А казалось бы, такая простая задачка… Но может быть дело не в задачке, а в языке? 😉

Итак, решение на PowerShell. Сразу в виде удобной функции. По умолчанию получает текущего пользователя для локального компьютера, но можно указать и удалённый.

Function Get-LoggedOn ($Comp = $env:computername)            
{            
Get-WmiObject -computername $Comp -query `
    "Select logonid from Win32_LogonSession where logontype = 2 or logontype = 10" |             
foreach {Get-WmiObject -computername $Comp -query `
    "Associators of {Win32_LogonSession.LogonId=$($_.logonid)} Where AssocClass=Win32_LoggedOnUser Role=Dependent"}            
}            

Фактически тут только 1-2 строчки. Остальное для читабельности и обёртка в функцию. Копипастим её в консоль (или сразу в файл профиля), и используем:

PS C:\root> Get-LoggedOn esprimo10


AccountType : 512
Caption     : MYDOMAIN\gusev
Domain      : MYDOMAIN
SID         : S-1-5-21-445788029-8720151102-0124946612-1722
FullName    : Гусев Василий
Name        : gusev

Если вам нужны другие типы сессий, то вот тут есть полный список значений LogonType которые можно использовать в WMI запросе — http://msdn.microsoft.com/en-us/library/aa394189.aspx

Опубликовано в Uncategorized. Метки: , , . 25 комментариев »