Архив метки: powershell

Копирование прав на папки через powershell

Первая строка запоминает права ntfs на настроенную папку, вторая — делает такие же права на другую.

$acl = Get-Acl -Path .\Path1
Set-Acl .\Path2 $acl

Более навороченный вариант с модификацией прав: http://social.technet.microsoft.com/Forums/ru-RU/scrlangru/thread/74f32d78-3815-4fe0-9f3d-20c0d99c9dc4/

Бесплатная русская книга о PowerShell

Лежит здесь: https://skydrive.live.com/?cid=d489fb91b2112580&id=D489FB91B2112580!212

Оглавление:

Первое впечатление о Windows PowerShell ………………………………………………………5
Расширенные возможности вывода: конвейеры ………………………………………………..7
Вводные упражнения с объектами Windows PowerShell ………………………………………..8
Работа с процессами ……………………………………………………………………………….8
Вывод в файлы формата TXT, CSV или XML ………………………………………………………9
Вывод в цвете ………………………………………………………………………………………10
Проверка условий с помощью командлета if ……………………………………………………11
Вывод в виде HTML …………………………………………………………………………………12
Работа с файлами …………………………………………………………………………………..15
Поиск информации об объектах с помощью Get-Member ……………………………………. 16
Удаление файлов …………………………………………………………………………………  18
Создание папок …………………………………………………………………………………….19
Если у вас есть время … ……………………………………………………………………………21
Windows PowerShell как машина обработки произвольных объектов ………………………. 23
Объекты WMI………………………………………………………………………………………. 23
Работа с объектами .NET и XML…………………………………………………………………. 25
Работа с COM-объектами ………………………………………………………………………… 26
Работа с журналами сообщений …………………………………………………………………29
Сценарии-решения к упражнениям в этой книге ………………………………………………30
Примеры к Windows PowerShell – от простых к сложным ……………………………………. 33
Теоретические принципы Windows PowerShell ……………………………………………….. 35
Windows PowerShell – краткое введение ……………………………………………………….. 35
Цели разработки Windows PowerShell ………………………………………………………….. 35
О тексте, разборе текста и объектах …………………………………………………………… 35
Новый язык сценариев …………………………………………………………………………… 36
Команды Windows и служебные программы ………………………………………………….. 37
Интерактивная среда …………………………………………………………………………….. 37
Поддержка сценариев …………………………………………………………………………… 37
CMD, WScript или PowerShell? Что выбрать? …………………………………………………… 37
Windows PowerShell 1.0 …………………………………………………………………………..38
Безопасность при использовании сценариев …………………………………………………..39

Что можно делать через get-wmiobject в powershell

http://www.xakep.ru/magazine/xa/091/040/5.asp

Naked Snake

Хакер, номер #091, стр. 091-040-5


Ты еще раз убедился, что скрипт написан полностью с использованием cmdlets. Этот код с вызовом функции Get-WmiObject я привел не просто так. WMI — это Windows Management Instrumentation, то есть программный интерфейс управления системой. С помощью WMI возможно управлять операционкой и получать информацию о системе. Например, ты легко можешь получить настройки БИОСа:

gwmi win32_BIOS

SMBIOSBIOSVersion : ASUS A7N8X2.0 ACPI BIOS Rev 10

Manufacturer : Phoenix Technologies, LTD

Name : Phoenix — AwardBIOS v6.00PG

SerialNumber : xxxxxxxxxxx

Version : Nvidia — 42302e31

Маленькое пояснение: gwmi — это короткий псевдоним все той же Get-WmiObject. Штука поистине уникальная: с ее помощью можно узнать о всех девайсах, присоединенных к твоему компу (принтеры, сканеры), сетевых настройках, легко управлять софтом, установленном на машине (так же как в меню «Установка и удаление программ») и многое другое. Смотри, как вывести свободное место на своих дисках:

get-wmiobject Win32_LogicalDisk | select deviceid,freespace,size

deviceid freespace size

——— ——— —-

A:

C: 6861377536 27135164416

D: 1317060608 18867748864

Для этого в качестве параметра для Get-WmiObject мы передали флаг Win32_LogicalDisk и таким образом получили полную статистику по дискам с нужными нам полями. Набери в консоли «Get-WmiObject –list» — и ты подивишься разнообразию объектов, о которых собрана информация. Но едва ли среди этого огромного списка найдешь то, что тебе действительно нужно. Но тут есть простой рецепт — набери в консоли:

get-WMIObject -list | where {$_ -match «что тебя интересует»}

Конструкция, указанная после пайпа (|), — это что-то вроде аналога grep в юниксе. То есть она фильтрует строки по содержимому, и после ввода этой команды ты получишь только те строки, в которых содержится интересующая тебя последовательность символов.

Необычные провайдеры

Перейдем к еще одной новаторской фиче — PowerShell. Ребята из Microsoft подумали и решили максимально упростить работу пользователя с различными структурами: файловой системой, реестром, множеством переменных. Для всех них определены несколько общих методов, позволяющих легко манипулировать данными. Вот пример. Допустим, мы выбрали в качестве структуры (в плоскости PowerShell — провайдера) файловую систему и совершенно обычным образом перемещаемся между папками и дисками с помощью команды cd. Зашли в диск C:\ и просмотрели содержимое с помощью ls. А теперь выберем в качестве структуры реестр. По большому счету, он очень схож с файловой системой: разделы или ветки — это папки, а ключи реестра – это файлы. Так почему бы не перемещаться по ним аналогичным образом? Провайдером по умолчанию, что логично, установлена файловая система (FileSystem). Чтобы сменить провайдера, необходимо использовать команду Set-Location. Список всех доступных вариантов выдаст команда Get-PSProvider:

Name Capabilities Drives

—- ———— ——

Alias ShouldProcess {Alias}

Environment ShouldProcess {Env}

FileSystem Filter, ShouldProcess {C, D, E, F..

Function ShouldProcess {Function}

Registry ShouldProcess {HKLM, HKCU}

Variable ShouldProcess {Variable}

Certificate ShouldProcess {cert}

Скажем, если ты хочешь изучить содержимое реестра, то должен переключиться на него с помощью команды Set-Location HKLM:\. Теперь просмотри список ветки HKLV с помощью ls. Вывод команды отображен на скрине — глянь туда. Теперь ты можешь творить с реестром, что хочешь. Его ветки теперь для тебя, как папки, и ты можешь бродить по ним через «cd». А значения ключей легко выводятся cat’ом. Это, кстати, одна из самых мощных и полезных фич PowerShell’a.

Это только начало приключений

Признаться, PowerShell настолько многообразный и функциональный, что едва ли я охватил даже тысячную часть всех его возможностей. Но я постарался показать самый сок и основной подход в реализации сценариев. Теперь — дело за тобой. Всевозможные HOWTO и подробная документация доступна в интернете, но пока только на английском языке. Но штуковина стоит того, чтобы с ней разобраться — за ней будущее.

Эти фишки помогут тебе в настройке автоматики

PowerShell предоставляет удобные средства по работе с системными службами. Следующая команда, к примеру, выводит список работающих служб:

get-service | where-object { $_.Status -eq «Running» }

Внимательно изучи ключи командлета set-service. С его помощью легко меняются любые параметры служб, например тип запуска:

set-service <имя_службы> -StartupType Manual

Новый шелл от Microsoft имеет в своем арсенале десятки служебных переменных, использованием которых не стоит пренебрегать. Например, переменная $LASTEXITCODE всегда содержит код завершения последней запущенной программы. Заюзать ее проще простого. Например, команда ping, в случае недоступности удаленного хоста, возвращает в качестве кода завершения единицу, а в случае получения ICMP-ответа (то есть удачного подключения) — ноль. Таким образом, написание простейшего скрипта для мониторинга работоспособности удаленного хоста сводится к одной-единственной конструкции if-else.

Удаленное администрирование

Народные умельцы уже написали клиент-серверный скрипт, позволяющий работать в PowerShell на расстоянии. Разработка доступна на сайте http://mshforfun.blogspot.com/2006/03/powershell-remoting-beta-and-future.html и весит аж 300 Кб. Сейчас расскажу, как его поставить. Выкачивай архив, распаковывай и запускай в PowerShell. Переходи в папку с сервером (PowerShellRemoting\server) и запускай инсталляционный скрипт: ./’install.ps1′. Не забудь одну важную вещь. В новом шелле есть такая фича, как execution policies, которая контролирует режимы запуска скриптов. По умолчанию ни один сценарий у тебя не запустится (это для твоей же безопасности сделали, наученные горьким опытом, Script Host). Чтобы активировать возможность запуска скриптов, необходимо выполнить команду Set-ExecutionPolicy RemoteSigned, устанавливающую разрешающий режим. Подробности по теме описаны в справке: Get-Help about_signing | more. Теперь вернемся к установке. После подтверждения установки, в системе обозначится новая служба PowerShellRemoting — ее необходимо запустить, а также настроить на автоматический запуск. Это делается через «Панель управление -> Администрирование -> Службы». По умолчанию шелл принимает подключения от администратора с локалхоста, а для того, чтобы разрешить доступ другим клиентам, необходимо исправить файл user.xml. Ну а дальше? Дальше надо аналогично установить клиентскую часть и радоваться жизни, подключаясь к удаленному компу: ./’Start-Remotehost.ps1′.