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

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



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
LevT
Хорошо, спасибо.
Пробую через GPO включить эту функцию на всех ПК.

Всего записей: 228 | Зарегистр. 05-03-2015 | Отправлено: 13:04 08-11-2017 | Исправлено: techobsl, 13:04 08-11-2017
LevT



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

К разговорам на пред. страницах:
у Invoke-Command есть ключ -RunAsAdministrator
 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 14:31 14-11-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PhoenixUA
Ты выше сомневался, зачем нужны прокси-функции
Вот пример https://github.com/zloeber/NLogModule

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 20:39 14-11-2017
PhoenixUA



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Ну никто ему не мешал так же написать Write-NLogHost или Write-NLogOutput и использовать их. Меньше кода было бы. И путаницы тоже, если бы он вдруг захотел использовать оригинальный командлет...

Всего записей: 2184 | Зарегистр. 17-11-2005 | Отправлено: 20:59 14-11-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PhoenixUA
 
Задача скрестить ужа с ежом: командлеты Write- и сторонний логгер.
Вот для такого рода задач и предусмотрены прокси-функции.
 
 
Добавлено:
 
Импортируешь и настраиваешь логгер (примерно так: https://github.com/zloeber/ModuleBuild/tree/master/plugins/NLog )  
- и встроенные командлеты начинают с ним работать.
Без изменения полезного кода, неважно своего или чужого.
 
 
Добавлено:
PhoenixUA
Смотри с точки зрения "подмастерья", знающего несколько команд.
Тебе дали папку со скриптами, и ты запускаешь что-то там.
С твоей точки зрения всё работает как надо.
 
И с точки зрения разработчика тоже )
 
 
Добавлено:
ЗЫ. Вместо передачи папки в пошике можно сконфигурить для подмастерья сессию с ограниченным языком и исключительно нужными  модулями.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 21:36 14-11-2017 | Исправлено: LevT, 22:35 14-11-2017
2as

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, тут где то ссылка пробегала на модуль типа менеджер заданий.
Смысл чтобы поставить скрипт(ы) PS на выполнение (может быть и по-расписанию), и забыть.
Когда назначенные задания будут выполнены - получить отчет о выполнении, полученных ошибках и т.д. Если какие-либо компы не были доступны, то менеджер продолжает выполнение задания до победного... Другими словами есть обратная связь, система контроля, система принятия решения...
Был этот менеджер с графическим интерфейсом.  
 
Тогда просмотрел описание по-диагонали, вскользь. Не было необходимости как бы....
Сейчас понадобился, но самому не хотелось бы изобретать велосипед.  
Буду признателен.  
Заранее спасибо.

Всего записей: 3482 | Зарегистр. 09-09-2003 | Отправлено: 06:25 15-11-2017
LevT



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

Код:
 
PS C:\Windows\system32> Get-Module -li *sched*
 
 
    Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules
 
 
ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Binary     1.1.0.0    PSScheduledJob                      {New-JobTrigger, Add-JobTrigger, Remove-JobTrigger, Get-Jo...
Manifest   1.0.0.0    ScheduledTasks                      {Get-ScheduledTask, Set-ScheduledTask, Register-ScheduledT...
 

 
Это встроенное, второе в систему начиная емнип с 8.1  а первое в PS начиная с 3.
 
Еще через галерею доступны сторонние модуль и DSC ресурс на эту тему: {Find-Module *sched* | select нужное | inmo} в 5.0, либо скачать руками из веба.
 
Лично могу порекомендовать Invoke-Build.
это движок, который определяет понятие/ключевое слово task  
https://github.com/nightroman/Invoke-Build/wiki/Concepts
 
поверх него есть https://github.com/shaynevanasperen/PowerTasks - для выполнения тасков (не обязательно билдов) на "агентах".
 
 
 
Добавлено:
 

Цитата:
Был этот менеджер с графическим интерфейсом.  

 
а вот такого не помню

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 08:48 15-11-2017 | Исправлено: LevT, 09:30 15-11-2017
2as

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

Цитата:
а вот такого не помню  

В любом случае, спасибо, есть что посмотреть, помозговать...
Хотя, похоже, это командлеты для работы со стандартным планировщиком Windows...
...
Ладно, почитаю, поищу еще, но видимо, придется колхозить самому, чтобы "костюмчик сидел" как хочется...

Всего записей: 3482 | Зарегистр. 09-09-2003 | Отправлено: 09:47 15-11-2017 | Исправлено: 2as, 09:54 15-11-2017
LevT



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

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 09:58 15-11-2017 | Исправлено: LevT, 11:22 15-11-2017
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как на Win 8.1 присвоить значение при типе None? На Win 10 работает, а тут уже нет.

Код:
 
New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bmp\OpenWithProgids -Name Paint.Picture -Type None -Value ([byte[]]::new(0)) -Force
 

Нашел:

Код:
 
New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bmp\OpenWithProgids -Name Paint.Picture2 -Type None -Value ([byte[]]@()) -Force
 

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 15:15 28-11-2017 | Исправлено: farag, 19:32 28-11-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для начала в любом случае стоит уточнить, дело в версии винды или же WMF.
$PSVersionTable выдаёт 4.0?  
А после обновления фреймворка? (я обновляю из шоколадки choco install powershell)
 
Ну и пошик замечателен своей всеядностью.  
Я бы не искал долго труЪ спосооба, а сформировал например годный reg файл. Например, гуёвым редактором - экспортом -  программной правкой.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 16:08 28-11-2017
farag



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

Цитата:
годный reg файл

Не подходит, так как не вижу, что выполняется. Да, по умолчанию в 8.1 — 4.0. Но иногда я не понимаю. почему даже после обновления до 5.1 некоторые команды, работающие в 10, продолжают выдавать ошибки. Я уже замаялся искать все для 8.1.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 19:33 28-11-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
Я б спросил на https://powershell.org/forums/
 
 

Цитата:
иногда я не понимаю. почему даже после обновления до 5.1 некоторые команды, работающие в 10, продолжают выдавать ошибки.

 
Значит под ковром эти команды дёргают сервис операционки, где что-то не было доделано.
Надо просто принять как факт, что допиливать старые оси они не намерены.
 
 
Добавлено:
С другой стороны, и до десятки была жизнь, были и павершел-умельцы, которые делали что хотели, обходя всевозможные ограничения.
Вернее всего их найти на указанном мною ресурсе.
И ещё на stackowerflow

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 22:21 28-11-2017 | Исправлено: LevT, 22:30 28-11-2017
farag



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

Цитата:
И ещё на stackowerflow

Это все знаю. Приходится часто усердно гуглить, ибо нуб.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 08:14 29-11-2017
farag



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

Код:
 
$sid = (Get-CimInstance Win32_UserAccount -Filter "name='$env:USERNAME'").SID
$admins = New-Object System.Security.Principal.SecurityIdentifier("$sid")
$admins = $admins.Translate([System.Security.Principal.NTAccount])
$key = [Microsoft.Win32.Registry]::CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpe\UserChoice", "ReadWriteSubTree", "TakeOwnership")
$acl = $key.GetAccessControl()
$acl.SetOwner($admins)
$key.SetAccessControl($acl)
$acl = $key.GetAccessControl()
$rule = New-Object System.Security.AccessControl.RegistryAccessRule($admins, "FullControl", "Allow")
$acl.SetAccessRule($rule)
$key.SetAccessControl($acl)
New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpe\UserChoice" -Name ProgId -Value PhotoViewer.FileAssoc.Jpeg -Force
 
Но выдает "New-ItemProperty : Запрошенный доступ к реестру запрещен". Где скрывается ошибка?
Если смотреть через графику, то напротив "Запретить" у текущего пользователя стоит галочка напротив "Особые разрешения".
Можно как-то сделать универсальное решение с помощью скрипта, чтобы по-любому становиться владельцем папки в реестре и снимать такого рода ограничения?

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 20:28 30-11-2017
2as

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

Цитата:
с помощью скрипта, чтобы по-любому становиться владельцем папки в реестре и снимать такого рода ограничения?

Этак далеко можно зайти )))
...
Что мешает выполнять скрипт от имени админа, или иного пользователя, обладающего соответствующими полномочиями?
На удаленном компьютере можно выполнить через Invoke-Command :

Всего записей: 3482 | Зарегистр. 09-09-2003 | Отправлено: 09:20 01-12-2017
farag



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

Цитата:
Что мешает выполнять скрипт от имени админа

Все выполняется локально и, конечно, от админа. Просто явно где-то ошибка в скрипте.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 11:27 01-12-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Написал автопатчилку для варезной темы, где мастер выкладывает патчи в fc-подобном формате.
http://forum.ru-board.com/topic.cgi?forum=35&topic=3231&start=700#21
 
Просьба проверить общую корректность алгоритма и добавить проверки (на случай если патч неприменим к локальному файлу)  
- после этого можно будет убрать отладочную выдачу  
 

Цитата:
0082EE27: 50,192 ---> 176,1 ...Сделано!
0082F24F: 138,195 ---> 176,1 ...Сделано!
00831997: 50,192 ---> 176,1 ...Сделано!
008319C2: 50,192 ---> 176,1 ...Сделано!
00831A1B: 50,192 ---> 176,1 ...Сделано!
00831A31: 50,192 ---> 176,1 ...Сделано!
00C572E3: 0 ---> 120 ...Сделано!
00D2A990: 138,65,69 ---> 48,192,144 ...Сделано!
 

 
и по возможности сделать покрасивше сам текст инструмента!

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 00:04 06-12-2017 | Исправлено: LevT, 08:56 06-12-2017
sysprg2e

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Маленькое выступление по поводу ОПТИМИЗАЦИИ PShell кода:
в ходе написания парсера SMBIOS, мне пришлось создавать множество простейших функций, переводящих значение цифрового кода в строковое значение. Для маленьких табличек я не задумываясь использовал конструкцию SWITCH до тех пор, пока не налетел на 4000+ таблицу кодов и строк, соответствующих производителям железа. Вот в этот момент я тут же осознал, "Дебил, ну кто же тебя учил код писать, неужели не понимаешь, что как минимум бинарный поиск надо использовать!" Но немного подумав, пришел к выводу о том, что и бинарный поиск совершенно лишний, поскольку использовать можно ПРЯМУЮ АДРЕСАЦИЮ. В итоге функция с говорящим именем Get-VendorByCode стала выглядеть вот так:

Код:
 
function Get-VendorByCode( [uint16]$code )
{
   $C0001 = "Fry's Electronics";                                          
   $C0002 = "Ingram";                                                        
   $C0003 = "Club Mac";                                                    
   $C0004 = "Nebraska Furniture Mart";  
....................
    $CFA57 = "Interagon A";                                                  
 
   $vn = "C{0:x4}" -f $code;
   $vv = Get-Variable "$vn" -ValueOnly -ea SilentlyContinue -ev error;
   if ( $error ) {return "*** Value for the code $code is not defined";}
   return "$vv";
}  
 

Несомненно, что в моем случае, при парсинге одного единственного SMBIOS, выигрыш от подобной "оптимизации", совершенно не ощутим, но вот в случае выдачи тысяч запросов к базам данных, метод, использованный для замены тупого, прямолинейного SWITCH с прямым перебором в худшем случае ВСЕХ значений, даст весьма ощутимый выигрыш. Несомненно также, что ОПЫТНЫЕ программисты все это прекрасно знают, но среди тем форума часто встречаются и вопросы  от студентов, которым описанная техника, НАДЕЮСЬ, может пригодиться. P.S: Приведенные выше коды и их интерпретация, взяты из документа  SMBIOS-DSP0134_3.0.0.pdf.

Всего записей: 4 | Зарегистр. 16-12-2017 | Отправлено: 16:04 24-12-2017 | Исправлено: IFkO, 17:38 24-12-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sysprg2e
Зря под тег убрали, раскройте.
 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 16:09 24-12-2017 | Исправлено: LevT, 17:47 24-12-2017
   

Страницы: 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