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

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



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

Цитата:
Показывайте целиком скрипт
скрипт #
 

Цитата:
и файл-лог тоже,
лог
 

Всего записей: 89 | Зарегистр. 22-02-2017 | Отправлено: 17:21 03-08-2017 | Исправлено: Richard_Nixon, 17:21 03-08-2017
YuS_2



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

Цитата:
Так точно, есть.  

Значит так.
По предоставленным данным (скрипт с фильтрами и лог-файл), в выборке test_arr3.txt ни одного совпадения не найдено по IP адресам:
212.96.201.61
212.96.201.67
212.96.201.82
212.96.201.107
и более того, также не найдено совпадения по сети 212.96.201.* и нет даже такого сочетания цифр 212 (файл открыл в AkelPad-е и поиском пытался найти)
Найдены только совпадения по сети 10.120.30.*, о чем, собственно есть запись в отчете: 417 совпадений
так что, ошибок нет, скрипт показывает то, что реально присутствует в выборке.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:51 03-08-2017
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Да можно и User, но дело не в этом, конечно. Документацию я читал (можно было не давать), но где ошибка, я так и не понимаю...
Обхожусь пока так:

Код:
 
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName SoftwareDistribution -Settings $settings -User System -RunLevel Highest -Force
 

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 19:07 03-08-2017 | Исправлено: farag, 19:08 03-08-2017
Richard_Nixon



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2 17:51 03-08-2017

Цитата:
Найдены только совпадения по сети 10.120.30.*
Очки мне нужно новые брать, чтобы не отвлекать людей из-за собственной глупости. Скрипт отрабатывает на 100%.  Другие диапазоны дат показали картину.

Всего записей: 89 | Зарегистр. 22-02-2017 | Отправлено: 19:13 03-08-2017 | Исправлено: Richard_Nixon, 19:17 03-08-2017
YuS_2



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

Цитата:
дело не в этом, конечно.

Возможно. Поэкспериментируйте или почитайте форумы по powershell, может быть что-то и найдется...
У меня нет ни 8, ни 10, так что, всё равно, проверять не на чем.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 10:42 04-08-2017
farag



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

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
18-страничная книжечка  
"Become Hardcore Extreme Black Belt PowerShell Ninja Rockstar"
 
полкнижки - вопросы по самоэзаменовке, принципиально без ответов  
полкнижки - мотивирующий текст
 
Можно скачать целиком по ссылке "Read free sample" отсюда
(так что платить три бакса необязательно)
 
Кому эти материи интересны - стучитесь для начала в ПМ,  
наберётся несколько человек - заведём "Ru-Board Powershell User Group".
 
Это модно!

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 16:46 16-08-2017 | Исправлено: LevT, 16:59 16-08-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не знал, куда писать, посоветовали сюда написать.
 Есть следующая проблема - куча папок с произвольными названиями(назовем их коренные папки), в каждой из этих папок есть папка с одним и тем же названием - (базовая).  
 нужно перенести файлы из базовых папок в коренные папки, а все остальное удалить(необязательно).  
 То есть:  
 01  
   aaaa  
 02  
  aaaa  
 03  
  aaaa  
   
 И так далее, нужные файлы только в папке aaaa - их надо перенести в 01 02 03.  
   
Как такое решить, думаю что-то готовое должно быть, задача то несложная...

Всего записей: 1584 | Зарегистр. 08-10-2011 | Отправлено: 17:48 18-08-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal
 
$folders = $root | Get-ChildItem -Recourse -Directory -Filter 'aaaa'  
$folders | foreach-object {
    $psitem | get-childitem -Recourse | Move-Item -Destination $PSItem.PSParentPath
}
 
Как-то так...
 
Написано навскидку прямо в форму ответа, возможны ошибки.
Сами попробуйте отладить.
Если что конкретно непонятно, спрашивайте.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 18:39 18-08-2017 | Исправлено: LevT, 19:06 18-08-2017
YuS_2



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

Цитата:
Как такое решить

Примерно так:

Код:
$droot = "c:\Temp\TEST"
$dfil = "aaaa"
dir $droot -ex $dfil|?{
    $_.psiscontainer
}|dir -filt $dfil|dir|?{
    !$_.psiscontainer
}|%{
    mi $_.fullname (gp $_.directoryname).psparentpath -whatif
}

 
или, если у Вас PoSh версии 3.0 и выше, то как выше LevT посоветовал (впервые вижу практическую помощь без поучений ).
Только код надо немного поправить, там есть лишнее, что может помешать соответствию условиям:
 

Код:
$root = "c:\Temp\TEST"
$folders = $root | Get-ChildItem -Rec -Directory -Filter 'aaaa'  
$folders | foreach-object {  
    $psitem | get-childitem -file | Move-Item -Destination $PSItem.PSParentPath -whatif
}

- правда тут есть одно но... в корневых каталогах не должно существовать папки "aaaa", иначе из неё тоже будут перемещены файлы.
 
ЗЫ для реальной работы скриптов, необходимо удалить из них вот это:

Код:
 -whatif

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:55 18-08-2017 | Исправлено: YuS_2, 21:24 18-08-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
 
практическая помощь от меня была бы в том, чтобы человек сам такое написал
   или хотя бы отладил данную мною "рыбу"
Виноват: смалодушествовал (предвидя критику ), и потому свой ответ продумал лучше, чем было бы полезно спрашивающему.
 
По предложенному здесь мною образцу можно - и желательно! - научить мыслить - те самостоятельно решать задачи - всех, а не только... гкхм... знатоков pushd/popd
 
Кроме того, на этом пути возможно сотрудничество и разделение труда  
(например:
один пишет функцию Get-AAAAFolders,  
другой независимо от него двигает содержимое нескольких найденных папок так, чтобы один код обрабатывал случаи 0/1/много папок
-- в итоге оба выдали по повторно используемому инструменту,  
которые можно дать такому юзеру, который только и умеет складывать чужие кирпичики)
 
 
Добавлено:

Цитата:
 в корневых каталогах не должно существовать папки "aaaa", иначе из неё тоже будут перемещены файлы.  

 
Get-ChildItem -Recourse -Directory -Filter 'aaaa'  -Exclude  дальше сами

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 21:43 18-08-2017 | Исправлено: LevT, 21:57 18-08-2017
YuS_2



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

Цитата:
знатоков pushd/popd

Хм, а чем вас не устраивают pushd/popd? Вполне себе командлеты из PS
 

Цитата:
дальше сами

Ну да, ну да...  
man поможет всем - "а дальше сами"
 
Это каким-таким образом дальше сами?

Код:
Get-ChildItem -Recourse -Directory -Filter 'aaaa'  -Exclude 'aaaa'  

-так что ли? Замечательное выражение... почти матерное
 
Здесь требовался отбор папок первого уровня с исключением, затем отбор папок второго уровня по фильтру, а после уже отбор файлов и без рекурсии... чего в вашей "рыбе" не было... хвост ей отрубить надо было

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 22:07 18-08-2017 | Исправлено: YuS_2, 22:13 18-08-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
стоит попробовать  -exclude "$root\aaaa"
 
 
Добавлено:
 

Цитата:
а чем вас не устраивают pushd/popd? Вполне себе командлеты из PS  

 
втиснутые для совместимости с гномами-тружениками bash/cmd
 
 
 
Добавлено:

Цитата:
man поможет всем - "а дальше сами"  

 
1) PS help отличается от *nix man
сами догадайтесь, чем
 
2) PS командлеты отличаются от встроенных в оболочку ОС и внешних команд
сами догадайтесь, чем
 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 23:08 18-08-2017 | Исправлено: LevT, 23:42 18-08-2017
YuS_2



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

Цитата:
стоит попробовать  -exclude "$root\aaaa"

Ну, да, согласен, PS тем и хорош, что можно пробовать многое... только вот, как и везде, сначала алгоритм, а потом код... наоборот - получается хуже
 
 

Цитата:
втиснутые для совместимости с гномами-тружениками bash/cmd

В этом миксе много чего втиснуто, в угоду совместимости, но от этого он хуже не стал, наверное... хотя, для кого-то, привыкшего совсем к другим структурам, возможно выглядит и хуже. Но имхо, это скорее дело привычки...
Кстати, pushd/popd здесь ещё и более функциональные, позволяют именовать сохраняемые стеки...
 

Цитата:
PS help отличается от *nix man

Это видимо, для всех, кроме Вас, должно стать Америкой?
 

Цитата:
PS командлеты отличаются от встроенных в оболочку ОС и внешних команд

Это вообще непонятно о чем... в смысле, разве кто-то утверждал обратное?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 08:00 19-08-2017
LevT



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

Цитата:
только вот, как и везде, сначала алгоритм, а потом код...  

 
В пошике есть готовая инфраструктура, которую изобретатели велосипедов сочинятели алгоритмов склонны игнорировать.
 
Например, explorability: предпочтительно посмотреть, обнаружить и задействовать готовые инструменты, поставляемые вместе с пошиком или с его помощью.
Задействовать именно для пошика естественым, а не противоестенным образом.
(Для людей привычных к программированию на стеках - увы, именно противоестествнным).
 
Умные люди в течение полутора десятка лет успешно потрудились над тем, чтобы следование изобретенным ими и реализованным в пошике правилам давало преимущества.  
 
Главное из них - структурирование пользователей на  
-- инженеров-творцов инструментов и  
-- работяг, умеющих лишь складывать готовое (в лучшем случае его простецки скриптовать).
 
 
Добавлено:

Цитата:
PS тем и хорош, что можно пробовать многое...

 
Однако мудрость в том именно, чтобы фильтровать нужные объекты как можно раньше/ближе к началу "трубы" (конвейера).
Предпочтителльно средствами провайдера внешних данных.
 
 
Добавлено:
 

Цитата:
Это вообще непонятно о чем... в смысле, разве кто-то утверждал обратное?

 
для инженеров (см. выше) писать функции без [CmdletBinding()] - грех непростительный.
Означающий дисквалификацию.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 12:58 19-08-2017 | Исправлено: LevT, 13:33 19-08-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ещё вариант получить коллекцию именно нужных папок
gci -Name "$root\*\aaaa" -Directory   (чтобы случайно файл не проскочил)
 
 
так переписать лучше:
 
"$root\*\aaaa" | Get-ChildItem -Directory
в частности потому что вся "фильтрация" уехала в самое начало трубы.
 
кто понимает: это дико красиво, потому что gci это операция return из функционального программирования
она берёт валидную строку и упаковывает её в монадический контейнер (значением которого является коллекция "живых" PS-объектов)
живые они потому, что дёргая за них внутри powershell.exe, можно манипулировать соответствующими объектами "реального мира" - в данном случае подпапками с именем aaaa

 
 
Дальше есть соблазн продолжать монадические операции в "трубе" и дописать "онлайнер"/однострочник, тут же перемещающий контент отобранных папок.  
Но я этого делать не буду, поскольку не задаюсь целью потешить тщеславие.
 
В целях читаемости, удобопонятности и ради дальнешей поддержки кода лучше приземлить отобранное в переменную $ folders,  
чтобы проделать требуемое перемещение содержимого папок следующей "трубой" (см. выше)
 
powershell.exe - могучий "оракул", изменяющий реальный мир в соотвествии идеальным планом, представленным той второй трубой
и чем меньше в плане "алгоритмической" процедурной детализации, тем восхитительнее это его умение.


Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 19:44 19-08-2017 | Исправлено: LevT, 17:00 20-08-2017
YuS_2



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

Возрадуемся, сестры и братья!
 
 
ЗЫ Только просьба не обижаться - шутка без злобы какой-либо, просто шутка...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 07:25 20-08-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
блин... да не ленитесь последнюю 18-страничную книжку осилить
или наоборот "Monad manifesto" с современными комментариями  
https://powershell.org/ebooks/  (в левой колонке два варианта скачать)

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 12:12 20-08-2017 | Исправлено: LevT, 12:23 20-08-2017
Inoz2000



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

Цитата:
последнюю 18-страничную книжку
это то же самое, что "Unknown Artist - Track 18"

----------
Мы все умрём. (-:

Всего записей: 4891 | Зарегистр. 23-04-2009 | Отправлено: 12:37 20-08-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
ссылку я давал здесь выше на странице

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 13:33 20-08-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