Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » PowerShell

Модерирует : KLASS, IFkO

KLASS (06-03-2018 00:43): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

   

Uriu

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Версии

PowerShell 1.0 -  На текущий момент совершенно неактуальная версия, интересная только для истории. /Прямые ссылки/
PowerShell 2.0 и WinRM 2.0 - Последняя версия, работающая на Windows XP и Windows 2003 (Ещё) /Прямые ссылки/
PowerShell 3.0 (Windows Management Framework 3.0)
PowerShell 4.0 (Windows Management Framework 4.0)
PowerShell 5.0 (Windows Management Framework 5.0)
PowerShell 5.1 (Windows Management Framework 5.1)
PowerShell Core 6.0 (не заменяет PowerShell 5.1)



Ассоциация

Что бы ассоциировать скрипты с PowerShell, аналогично выполнению .bat/.cmd-файлов
нужно в командной строке набрать следующую команду(ы)
Версии 1.0-5.1 для 32-битных ОС: ftype microsoft.powershellscript.1=%windir%\system32\windowspowershell\v1.0\powershell.exe -file "%1"  
%*
 
Версии 1.0-5.1 для 32-битных ОС: ftype microsoft.powershellscript.1=%windir%\sysWOW64\windowspowershell\v1.0\powershell.exe -file "%1"  
%*
 
Версия 6.0 дя 32-битной ОС: ftype microsoft.powershellscript.1="C:\Program Files (86)\PowerShell\6.0.0\pwsh.exe"  -file "%1" %*
Версия 6.0 дя 64-битной ОС: ftype microsoft.powershellscript.1="C:\Program Files\PowerShell\6.0.0\pwsh.exe"  -file "%1" %*



вопрос о подписи скриптов

Что бы PowerShell не задавал вопрос о том, что скрипты не подписаны, ввести в нем команду
set-executionpolicy unrestricted
или в командной строке
powershell Set-ExecutionPolicy Unrestricted -force
(для этих 2-х действий требуются административные права)



Прочее


  • Если используете "белый список" в брандмауэре Windows, то для работы сценариев в сети необходимо создать 2 исходящих правила для svchost.exe и PowerShell.exe.
  • В отличие от батников кодировка скриптов на PowerShell должна быть 1251 (ANSI)




Расширение возможностей PowerShell
Функции
* Write-Color
* PowerTab --- Расширение функций клавиши Tab
Провайдеры
Готовые скрипты
* Ошибки и предупреждения в журнале событий по электронной почте (в4.0)
 


Работа со сценариями в Windows PowerShell
Раздел в MSDN
Краткие справочники по Windows PowerShell 3.0 (english)
Windows PowerShell Франк Кох (БЕРН)  Разработчик и пропагандист платформы. На русском языке в формате pdf и doc

Всего записей: 340 | Зарегистр. 25-11-2004 | Отправлено: 07:13 23-03-2006 | Исправлено: KapralBel, 09:31 29-01-2018
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ROSSTYA
Попробуй через Foreach-object:

Код:
 
Get-Recipient user | % { $_.Name; $_.EmailAddresses } | fl  
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:02 19-11-2009
ROSSTYA

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ааа класс! То что надо, огромное сапасибо! ТОлько начал с powershell разбираться, а у самого уже голова квадратная от всего этого.

Всего записей: 14 | Зарегистр. 27-09-2005 | Отправлено: 20:39 19-11-2009
greenfox



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Какой аналог cmd-шной "ipconfig /all" есть покороче чем стандартный аля:

Код:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -
ComputerName . | Select-Object -Property IPAddress

?
 
PS в шапке "Книги по PowerShell" - 404 not found
+ ещё неплохая книга есть "Попов А. Введение в Windows Power Shell" могу выложить кому надо

----------
Три вещи вечны: смерть, налоги и потеря данных...

Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 16:22 26-11-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenfox
Такого аналога нет. На мой взгляд не так уж и длинно:

Код:
 
$net = gwmi win32_networkAdapterConfiguration
$net | % { $_.IPAddress }
 

Еще можно создать функцию с коротким названием. Или alias.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:00 26-11-2009
greenfox



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
не что бы не флеймить - - явно не коротко (всё что длинее чем было ранее уже напрягает) + ещё и по умолчанию надо извращаться с функциями и т.д. взамен стандартной команды, которую уже сами "пальцы набивают, а глаза не видят"© Что неужели для такой архиважной команды виндовой не могли командлет встроеный забацать!? Это даже проще по идее чем орать на сцене "Developers! Developers! ..." etc "Моя расстроен насальник"©

----------
Три вещи вечны: смерть, налоги и потеря данных...

Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 19:02 26-11-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenfox
Но ведь никто не запрещает использовать тот же ipconfig.exe Она одинаково стандартная, что для cmd.exe, что для powershell.exe.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:21 26-11-2009
greenfox



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
это да Просто странно что с новым "мощным" средством не придумали реализации такой фичи

----------
Три вещи вечны: смерть, налоги и потеря данных...

Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 19:34 26-11-2009
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Какой аналог cmd-шной "ipconfig /all" есть покороче чем стандартный аля:  

А алиаз лень сделать? и забить оный в конфигурационный файл?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:46 27-11-2009
greenfox



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
на всех пк? лень Но впринципе всё конечно решаемо, просто удивило что не добавили в дефолт "отче наш" так сказать

----------
Три вещи вечны: смерть, налоги и потеря данных...

Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 14:17 27-11-2009
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ну конфигурационный файл можно логон-скриптом затянуть на комп

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:10 27-11-2009
greenfox



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
да это понятно, но как вы знаете лень матушка всё перелнь - зачем париться раз с powershell -а можно запустить теже консольные команды ала ipconfig и т.д.? Пока так пусть будет, потом когда вопрос встрянет полезу на какой-н скриптинг сайт смотреть как что написать можно...
 
PS в шапку надо ещё занести PowerShell Plus - вариант консоли от стороннего разработчика, имхо удобная вещь с уже готовыми встроенными скриптами и т.д. В варезнике всё есть

----------
Три вещи вечны: смерть, налоги и потеря данных...

Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 17:16 29-11-2009
greenfox



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никто не подскажет 2 команды

Код:
PS> Get-Process | Get-Member
PS> Get-Member -InputObject Get-Process

должны вывести одинаковое содержимое?

----------
Три вещи вечны: смерть, налоги и потеря данных...

Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 19:31 30-11-2009
Drunken_Master

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenfox
нет. Первая выведет members объекта процесса (TypeName: System.Diagnostics.Process), вторая — строки (System.String), потому что в этом случае "Get-Process" не выполняется. Сравните:
 

Код:
 
Get-Member -InputObject (Get-Process) # вернется массив
Get-Member -InputObject (Get-Process system) # а здесь и далее уже один объект
Get-Member -InputObject (Get-Process | Select -First 1)
 

Всего записей: 75 | Зарегистр. 11-12-2005 | Отправлено: 10:36 01-12-2009
greenfox



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Drunken_Master
а команда:
Код:
Get-Member -InputObject System.Diagnostics.Process

по идее аналог "Get-Process | Get-Member" но выводит другое...!?

----------
Три вещи вечны: смерть, налоги и потеря данных...

Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 13:41 01-12-2009
Drunken_Master

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenfox
Powershell оперирует объектами.

Код:
 
> Get-Member -InputObject System.Diagnostics.Process
 
 
   TypeName: System.String
 
Name             MemberType            Definition
----             ----------            ----------
Clone            Method                System.Object Clone()
CompareTo        Method                int CompareTo(System.Object value), i...
 

В этом случае "System.Diagnostics.Process" - это строка текста, что указывается в выводе: "TypeName: System.String".
Командлету Get-Member нужно передать объект, а не его имя. Имя - это строка, строка - это тоже объект, но не тот, что вам нужен.

Всего записей: 75 | Зарегистр. 11-12-2005 | Отправлено: 12:19 02-12-2009
greenfox



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Drunken_Master

Цитата:
Powershell оперирует объектами
это я понял, просто мне казалось что объект можно передать по имени, нет?!? + я не совсем тогда допонял логику ps -а: если TypeName это строка текста, то почему это не просто сво-ва объекта (propety) ? + если у объекта есть имя - а это наск я понимаю именно TypeName (нет!?) то почему объектами нельзя оперировать по их имени?
PS а где можно подробней почитать про объектную модель PS? А то я помню из курса по ООП который ещё в делфях изучал, может что забыл уже и стоит опять вспоминать

----------
Три вещи вечны: смерть, налоги и потеря данных...

Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 14:29 02-12-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenfox

Цитата:
PS а где можно подробней почитать про объектную модель PS?

Для меня это тоже самый сложный вопрос. Я так понимаю, что нужно смотреть библиотеку классов для дотнет на msdn. Особенно затруднение вызывают строки навроде:

Код:
 
PS > [system.net.ipaddress]'127.0.0.1'
 
Address           : 16777343
AddressFamily     : InterNetwork
ScopeId           :
IsIPv6Multicast   : False
IsIPv6LinkLocal   : False
IsIPv6SiteLocal   : False
IPAddressToString : 127.0.0.1
 
PS >
 

Каким образом узнать что существует такой тип данных?  

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:24 02-12-2009
greenfox



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Drunken_Master
почитал тут кое что, поправтте меня если я не прав. У каждого .Net объекта сущ-т afaik метод GetType которой по сути выводит структуру объекта (т.е. определяет её и отображет на экране в читаемом виде) и соот-но одно из полей этой структуры наз-ся FullName - это именно то что пишется в TypeName при анализе объекта уже самим get-member? Т.е. как таковой тип объекта хранится не напрямую в виде св-ва объекта в самом объекте, а получается из объекта путём использования соот-го метода (GetType), который по мимо FullName выводит ещё кучу информации... Так?
(Get-Process firefox).GetType().FullName
PS но всё равно почему тогда нельзя сразу на вход get-member подать название (fullname) типа объекта? Какая ему разница по какому принципу выводить структуру объекта если они типизированы - по структуре самого объекта или по имни его типа?
 
01MDM
PS > [system.net.ipaddress]'127.0.0.1'  | get-member
?
По дотнету да - тут даже не сама библиотека классов интересна, а философия построения объектной модели и т.д. imho

----------
Три вещи вечны: смерть, налоги и потеря данных...

Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 16:38 02-12-2009 | Исправлено: greenfox, 16:56 02-12-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenfox
Нет, просто интересует откуда взять, если заранее не знаешь о существовании:

Цитата:
[system.net.ipaddress]

Я же не ясновидящий. Наверное можно как-то вывести все доступные классы и типы. Меня если честно, все это ставит в тупик. Очень жаль, что в документации, да и в литературе этому почти не уделяют внимание. Готовый cmdlet всегда можно "просканировать" на наличие свойств и методов, но он то сам известен. Неужели так сложно добавить минимальную справку по типам-классам? Я об этом net.ipaddress узнал только благодаря вопросу по `ipconfig /all' через гугл..
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:09 02-12-2009
greenfox



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
тут наверно да - только библиотеку доступ-х объектов\типов смотреть + примеры и т.д. Если вас интересуют готовые типовые решение нас-ко я понимаю некоторые командлеты можно загрузить с инета и встроить в ваш PS... Как рекомендацию могу вам посоветовать использовать другой шел для PS -> PowerShell Plus Там по мимо расширенного интерфейса, автозаполнений и т.д. уже есть доп-й набор командлетов для так сказать админа
всё имхо.

----------
Три вещи вечны: смерть, налоги и потеря данных...

Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 17:30 02-12-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » PowerShell
KLASS (06-03-2018 00:43): Объединение тем по сценариям: Сценарии Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru