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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В шапке отсутствует топик по созданию пользовательских командлетов. Может стоит его туда прикрутить, ведь наверняка это будет полезно, потому как я сам только с оным стал разбираться, а вменяемых маннов по сабжу мало (на самом msdn их всего два).

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 13:13 10-09-2010
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ComradG
В шапке даже ссылки на последнюю финальную версию нет, а добавлять лень.
Глючный он какой-то PS, точнее, неноделанный.

----------
Разум когда-нибудь победит

Всего записей: 2586 | Зарегистр. 09-02-2003 | Отправлено: 22:07 11-09-2010 | Исправлено: Smitis, 22:07 11-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
В чем именно его недоделанность? Работает вроде нормально, разве что скорость даже при самой тотальной оптимизации скриптов оставляет желать лучшего, ну и баги самой .NET, в целом же все работает нормуль. Есть, правда, момент, который меня напрягает: если в батниках для входящего параметра было достаточно указать %1, то в PoSh'е для этого придется навалять что-то вроде param([string]$input), причем проще вариантов я не нашел. А шапка, если не ошибаюсь, не обновлялась довольно давно.

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 12:47 12-09-2010
01MDM



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

Цитата:
если в батниках для входящего параметра было достаточно указать %1, то в PoSh'е для этого придется навалять что-то вроде param([string]$input)

А как же массив $args:

Код:
 
$args | % { $_ }
$args.length
$args.count
$args[0..($args.count-1)]
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:23 12-09-2010 | Исправлено: 01MDM, 13:24 12-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Хм, ты имеешь в виду в теле функции? В теле функции $args не панацея, и вообще довольно плохая идея. Суди сам, например, вот фунция для распаковки зипов:

Код:
function Unpack-Zip
{
    param([string]$zipfilename, [string]$destination)
    if (test-path($zipfilename))
    {
       $shellApplication = new-object -com shell.application
       $zipPackage = $shellApplication.Namespace($zipfilename)
       $destinationFolder = $shellApplication.Namespace($destination)
       $destinationFolder.CopyHere($zipPackage.Items())
     }
}
А теперь скажи, удобно ли в данном случае трогать $args? По-моему, нет. А вот:

Код:
get-content $args
или что-то типа того, можно, согласен. Или что ты имел в виду?

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 13:48 12-09-2010 | Исправлено: ComradG, 13:49 12-09-2010
01MDM



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

Цитата:
Или что ты имел в виду?


Цитата:
ComradG  wrote:
 
если в батниках для входящего параметра было достаточно указать %1, то в PoSh'е для этого придется навалять что-то вроде  

Ничего не надо "валять":
%0 - $myinvocation.mycommand.definition
%1 - $args[0]

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Дружище, если не сложно, можешь привести простой пример, а то я не совсем догоняю
Цитата:
%0 - $myinvocation.mycommand.definition  
%1 - $args[0]

да и на примере лучше ориентироваться.

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 13:42 13-09-2010
01MDM



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

Цитата:
можешь привести простой пример

Все просто. Создаешь скрипт (например 1.ps1):

Код:
 
"Так называется скрипт: `"$($MyInvocation.MyCommand.Name)`", в батнике это `"%0`""
"Это первый аргумент для скрипта: `"$($args[0])`", в батнике это `"%1`""
"Это второй: `"$($args[1])`""
"Это аргументы по порядку:"
$args[0..($args.length-1)]  
 

И запускаешь его с аргументами:

Код:
 
PS > .\1 первый второй "аргумент три"
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:08 13-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Ааааа! Дошло.

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 18:46 13-09-2010 | Исправлено: ComradG, 18:50 13-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Да, совсем забыл! Ты же не привел пример того, как
Цитата:
%1 - $args[0]
можно использовать в функциях.

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 18:18 14-09-2010
01MDM



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

Код:
 
function test {
    
    $args[0]
    $args[1]
 
}
 
test string 123
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:24 14-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Спасибо, но Get-Item и ему подобные запросы внутри функции с аргументами все же дружить отказываются. Пытаюсь понять что не так делаю.

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 14:20 15-09-2010 | Исправлено: ComradG, 14:20 15-09-2010
01MDM



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

Цитата:
 
Get-Item и ему подобные запросы внутри функции с аргументами все же дружить отказываются.
 

Все работает

Код:
 
"file-1", "file-2" | % { ni -t file $_".ext" | out-null }
 
function test {
 
    gi $args[0]
    gi $args[1]
 
}
 
test file-1.ext file-2.ext
 
ri *.ext
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:38 15-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Спасибо, теперь понял где ошибался.

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 13:01 16-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
К WinAPI в PoSh можно обратиться только таким образом или есть альтернативный подход?

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 18:07 22-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
В PS есть аналог cmd'шному set /p или все же лучше использовать циклы вроде while?

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 11:49 27-09-2010
KapralBel



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

Цитата:
set /p

и

Цитата:
циклы вроде while?

Это немного разные вещи

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:53 27-09-2010
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Read-Host, если ты имеешь ввиду пользовательский ввод данных.
 
PS. Неплохая книга на английском Mastering-PowerShell.pdf

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:22 27-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Цитата:
Это немного  разные вещи
Я в курсе. Можно сказать даже что это совсем разные вещи. Просто я не совсем корректно сформулировал вопрос.
01MDMСпасибо за ссылку на книгу, но она, как оказалось, у меня уже имеется, - на досуге перечитаю. Да! Read-Host я и имел в виду (надо мне просто было заглянуть в справочник )

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 21:32 27-09-2010
BVV63



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, растолкуйте, пожалуйста, такую вещь. Чисто ради академического интереса . В мануалах по PowerShell описывается цифровое подписывание скриптов PowerShell. Я что-то недопонимаю, как можно подписать текстовый файл? Он, что, во что-то нечитаемое при этом конвертируется, что ли? Что только сам интерпретатор может прочитать ?

Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 06:44 28-09-2010
   

Страницы: 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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru