Версии на сайте микрософта:
http://technet.microsoft.com/ru-ru/library/dd348476%28v=ws.10%29.aspx
support.microsoft.com/kb/888794?wa=wsignin1.0
Версии на сайте микрософта:
http://technet.microsoft.com/ru-ru/library/dd348476%28v=ws.10%29.aspx
support.microsoft.com/kb/888794?wa=wsignin1.0
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′.
В коммандной строке или свойствах ярлыка (или где еще там) пишем следующее:
%windir%\system32\secpol.msc /s
http://www.firststeps.ru/mfc/msdn/r.php?24
WSH — это язык скриптов, который может поддерживать VBScript без броузера, что позволяет Вам создавать различные сценарии и приложения. Вообщем можно сказать, что данный вид сценариев является более интелектуальной заменой BAT файлов.
Что представляет из себя этот сценарий ??? Это обычный текстовый файл с расширением VBS. Его можно создать прямо в NotePad. Внутри должен быть корректный код VBSсript.
Что написать, чтобы попробовать ??? Ну вот такой простой код.
MsgBox "Hello"
В результате появится диалоговое окно просто с рабочего стола. Кроме VBScript сценарии можно строить на таких языкак как:
JScript Active Perl Python
Конечно просто сценарием много не сделаешь, но в сценариях реализована поддержка COM объектов. Часть из них можно сразу использовать. Вот те, которые поставляются стандартно.
Wscript WshShell WshNetwork FileSystemObject
Давайте посмотрим самый простой пример как получить версию самого WSH.
MsgBox WScript.Version
http://www.firststeps.ru/mfc/msdn/r.php?26 Автор Каев Артем.
Понятие «пространство имен» появилось вместе с появлением Windows 95 и остается в новых версиях до сих пор. Это иерархическая структура построенная на основе модели COM, которая включает:
Строится эта модель на основе COM, как и было объявленно при появлении этого интерфейса, что в будущем файловая система будет строиться на принципах COM (Освой программирование OLE за 21 день). Пространство имен вы видите используя Exploler. Вот это и есть пространство имен. То что вы видите отличается от файловой системы как таковой и это важно. Это не одно и тоже хотя похоже.
Самым верхнем уровнем иерархии считается рабочий стол. На данный момент пространство имен содержит больше объектов, чем файловая структура. Первое понятие это папка Shell folder. Это объект, который владеет другими объектами. Папка — это аналог директории, при этом многие объекты таковыми и являются. Подчеркиваю многие, но не все. Вот, например, те которые не имеют аналогов каталогов и являются виртуальными папками, например, My Computer или Network Neighborhood. Данные о папках, которые имеют аналоги на файловой системе хранятся в реестре по пути. Обратите внимание, что они хранятся в разделе HKEY_CURRENT_USER и специфичны для каждого пользователя.
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders/
http://www.firststeps.ru/mfc/msdn/r.php?57
http://www.firststeps.ru/mfc/msdn/r.php?90
SID(security identifier) — идентификатор безопасности. Данная структура уникально идентифицирует пользователя или группу в домене Windows NT. Именно по этому идентификатору определяют пользователей. Не по имени и по паролю, а по этому идентификатору. Например, Вы создали учетную запись. Потом стерли ее. Если снова создать запись с тем же именем и паролем SID будет уже другой и права не сохраняться. SID создается при создании учетной записи. Так же его имеют и все машины в сети. Отсюда понятна проблема, которая может случиться. Если у вас один первичный контролер домена, то после выхода его из строя и инсталляции снова Windows NT Server все и всех придется заново регистрировать и давать привилегии. Все строить на простой идеи. Этот идентификатор генерируется при создании учетной записи. Повторное создание приведет к генерации нового SID и это не зависит от паролей и имен.
QString path = "c:\\setup.log"; QDesktopServices::openUrl(QUrl::fromLocalFile(path)); Откроется в блокноте указанный файл
Текст файла: Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "cmd.exe", "/k echo test", "", "runas", 1Запуск файла скрипта:wscript Run.vbs или просто двойным кликом
Выполняется в командной строке Windows
net session — вывести список подключенных пользователей и компьютеров
net session /delete \\192.168.1.1 — отключить компьютер
Ещё в тему:
Управляем сетевыми папками с помощью PowerShell, отчёты