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

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
Дык всегда есть быстрая альтернатива: ассемблер.
Остаётся только ему научиться ))
 
Но он не поможет быстрее определяться ни с результатами каждого трансфера, ни даже HTTP-запроса.  
 
Добавлено:
 
Кстати, а что делает метод GetResponse?
Не забивает ли он полосу пропускания лишним скачиванием файла?

Всего записей: 17744 | Зарегистр. 14-10-2001 | Отправлено: 13:19 29-08-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Вместо изучения ассемблера и дохлого пошика, есть другие альтернативы )

Цитата:
Кстати, а что делает метод GetResponse?  

Я думал ты нам расскажешь, забивает он чего или как )

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 16:11 29-08-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1) пошик никак не отвечает за поведение этого дотнет-метода.
Даже если я попал в точку - возможно, в дотнете можно отменить реквест вместе с получением ответа (сразу после того, как нарисовались свойства ответа).
Сюда призываются знатоки асинхроннного веб-программирования   Это его самые азы, а мы - безграмотны.
 
2) Даже если бы пошик был действительно дохлым, "мы его любим не за это"
А твои альтернативы никакие не альтернативы - потому что пошик их может заюзать, а наоборот вряд ли ))
 
3) Пока не могу поиграться с твоим файлом и фильтром в трубе, но сделаю это обязательно.

Всего записей: 17744 | Зарегистр. 14-10-2001 | Отправлено: 16:24 29-08-2017 | Исправлено: LevT, 16:28 29-08-2017
YuS_2



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

Цитата:
Разумеется, только, если пошик такой медленный (о его медленности уже слышал здесь на форуме), то нафиг, нафиг

Да не при чем здесь пошик... если сервер не отдает ему данные, то и не выводит он ничего и тормозить будет в ожидании "чуда" от сервера.
PoSh ну никак не медленный... это всё враки.
Вот смотри:

Код:
cls
$VerbosePreference = "Continue"
function Get-Newer
{
    [CmdletBinding()]
    Param
    (
        # Remote files' URLs
        [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
        $Source,
 
        # Local files' paths
        [Parameter(ValueFromPipelineByPropertyName=$true)]
        $Destination
    )
 
    Process{
        try {
            $okay = $false
            $localfile = $PSItem.Destination | Get-Item -ErrorAction Stop   #если ошибка доступа к файлу или его нет
            [DateTime]$localtime = $localfile.LastWriteTime
            write-warning "$localtime(localtime) : $($localfile.fullname)"
 
            #возможные исключения в .Net методах Create и GetResponse не обработаны
            [DateTime]$remotetime = get-date((invoke-webrequest $_.Source -method 'head' -verbose:$false).headers.'last-modified')
            write-warning "$remotetime(remotetime) : $Source"
 
            if ($remotetime -ne $localtime){write-warning 'not ok'} else {write-warning 'ok'}
            if ($remotetime -gt $localtime){
                $okay = $true
            } else {
                Write-Warning ("{0} is not newer, skipping" -f $localfile.FullName)
            }
        } catch {
            # обработано только исключение "нет такого локального файла": ошибка доступа провалится сюда же
            $okay = $true
        } finally {
            write-warning '========================================='
        }
 
        if ($okay){
            write-warning "remotetime: $remotetime"
            write-warning 'Out remotetime or missing destination file'
            Write-Verbose ("Downloading: {0}" -f $PSItem.Source)
            Write-Output $PSItem
            write-warning '-------------------------'
        }
    }
 
}
 
gc C:\soft.txt|%{$_ -replace '^(;|#).+'}|ConvertFrom-CSV|Get-Newer | Start-BitsTransfer

Пронаблюдай, где затык выходит...
 
Вот, например, как это называется:

Код:
WARNING: =========================================
WARNING: 06/30/2017 09:04:42(localtime) : C:\temp\soft\SysinternalsSuite.zip
WARNING: 06/30/2017 09:06:20(remotetime) : http://live.sysinternals.com/Files/SysinternalsSuite.zip
WARNING: not ok
WARNING: ------------------------
WARNING: remotetime: 06/30/2017 09:06:20
WARNING: Out remotetime or missing destination file
VERBOSE: Downloading: http://live.sysinternals.com/Files/SysinternalsSuite.zip
WARNING: =========================================

?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 19:33 29-08-2017 | Исправлено: YuS_2, 22:32 29-08-2017
KLASS



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

Цитата:
если сервер не отдает ему данные,

Почему быстро отдает те же данные wget'у?

Цитата:
Пронаблюдай, где затык выходит...

А у меня вообще не выдало remotetime ни на одном файле
и усе скачало по новой
 
Добавлено:
Ага, брандмауэр отключил (там жестко все прикрыто) и remotetime появилось, но качает сволочь по новой. (
 
Добавлено:
Хех, еще раз с выключенным брандмауэром попробовал и появилось
is not newer, skipping
 
Добавлено:
И быстро так, АднАкА, помучаю еще.
 
Добавлено:
Протух на sysinternals (остальные не качал)  

Код:
 
06/30/2017 08:04:42(localtime) : E:\WgetSoft01\SysinternalsSuite.zip
06/30/2017 08:06:20(remotetime) : http://live.sysinternals.com/Files/SysinternalsSuite.zip
not ok
 

и качает по новой, но оооочень медленно, пока пост писал он 22Мб никак скачать не может.
Почему не протухает на wget?
 
Добавлено:
Ну вот опять все ровно и не качает ничего.
Усложнил задачу, удалив случайных 5 файлов, кроме sysinternals
Скачал недостающие... вроде как что-то вытанцовывается, надо будет еще с брандмауэром поиграться. Теперь с пошиком надо задавать правила на конкретные адреса svchost'у, иначе
беспредел )

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 20:24 29-08-2017 | Исправлено: KLASS, 20:56 29-08-2017
YuS_2



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

Цитата:
еще раз с выключенным брандмауэром попробовал и появилось

Ну вот! А то: "пошик медленный и нерабочий"
 

Цитата:
Протух на sysinternals (остальные не качал)

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

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



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возможно что-то глюканет на том же сайте sysinternals при соединении, вот и киснет.
Ведь не всегда он время путает.
Раз 10 еще попробовал, все ровно и шустро
Провел тест на время, список файлов один и тот же, только локальные файлы лежат в разных папках, рядышком
wget: лучший результат 10 секунд
пошик: лучший результат 4 секунды
Лучший результат - это когда по 2 раза подряд запускать из wget или пошика, только проверка, без скачивания, разумеется
беру слова обратно, по поводу медленности...
пошик, пошик... шайбу, шайбу  
YuS_2
LevT

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 21:23 29-08-2017 | Исправлено: KLASS, 21:34 29-08-2017
YuS_2



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

Цитата:
Усложнил задачу, удалив случайных 5 файлов, кроме sysinternals

Подкорректировал скрипт, теперь не надо удалять строки, можно просто добавлять ";" или "#" в начало ненужной строки
 

Цитата:
Провел тест на время, список файлов один и тот же, только локальные файлы лежат в разных папках, рядышком

Весьма относительный тест, слишком велика вероятность ошибки из-за третьей стороны (удаленного сервера и каналов связи)...
А вообще,  4 или 10 секунд - разница не особо критична ведь, тут больше плюсов от того, что wget - специализированный, но внешний инструмент, а powershell -  встроенный и с гораздо более широкими возможностями.

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



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Ошибки разумеется могут быть при тестировании, но если я за надцать минут запускал несколько раз (за раз по два раза) каждый скрипт, один пошика и один wget, результат
всегда был на стороне пошика. Разумеется, суть не в кол-ве секунд, а в том, что пошик не уступает (чего и хотелось выяснить) и при этом, инструмент встроенный.
Чем больше узнаем систему, тем меньше стороннего софта требуется для поставленных задач, это очевидно.
 
Добавлено:
А можно в начало скрипта сунуть определение кодировки 1251, а то что-то после долгих правок скрипта
AkelPad стал по умолчанию открывать его в 866, хотя ранее открывал в 1251. Теперь надо галку Автовыбор каждый раз снимать, вспотеть можно )
 
Добавлено:
Для информации, именно для http://live.sysinternals.com/Files/SysinternalsSuite.zip (IP 88.221.72.91)
надо в брандмауэре, по-мимо PowerShell.exe, открывать порты для svchost, иначе затык.
Остальным файлам из списка, для проверки изменений, достаточно открыть дорогу только для PowerShell.exe.

Поторопился с выводами, комп перезагрузил, отключил исходящее правило для svchost и затык уже на первом файле из списка
pwdcrack.zip. Получается, для нормального фунциклирования скрипта, надо правило, как для PowerShell.exe, так и для svchost...
ну это для тех, кто рубит брандмауэром выход наружу непотребным процессам, если правила по умолчанию от мелких, то и проблем не будет.

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 22:13 29-08-2017 | Исправлено: KLASS, 00:20 30-08-2017
LevT



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

Цитата:
Получается, для нормального фунциклирования скрипта, надо правило, как для PowerShell.exe, так и для svchost...  

А просто Start-BitsTransfer без нашего фильтра у тебя работал с каким правилом из?

Всего записей: 17744 | Зарегистр. 14-10-2001 | Отправлено: 12:52 30-08-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Когда только начал пробовать скачивать одной строкой в пошике, то для PowerShell
вообще не было правила, а глядя в Process Hacker были видны попытки соединения
svchost. Создал правило для svchost, где указал конкретные IP. После сунулся сюда в тему и задал вопрос. Про брандмауэр тупо и не думал, так как правило уже было. В процессе тестирования скрипта, уже выяснилось, что затык происходит, потому как появились попытки соединения еще и PowerShell.exe при выполнении скрипта. Дал ему дорогу и затыки прекратились.

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 13:05 30-08-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
BITS трансферы обеспечиваются отдельной службой.
HTTP реквесты пошик создаёт в своём процессе.  
 
У тебя всё так и будет работать через титанические усилия -  пока ты забываешь о том, что завёл себе "белый список".
А вот хорошо ли замусоривать форум искусственно созданными частными проблемами?  
Подумай сам, как модератор.

Всего записей: 17744 | Зарегистр. 14-10-2001 | Отправлено: 13:58 30-08-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Ты извини конечно, но это не проблема частного характера,
я не один здесь на форуме с белым списком.
Другое дело, что до многих это доходит долго,
но это уже проблемы многих, но не моя частная.

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 14:10 30-08-2017
YuS_2



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

Цитата:
А можно в начало скрипта сунуть определение кодировки 1251, а то что-то после долгих правок скрипта  
AkelPad стал по умолчанию открывать его в 866, хотя ранее открывал в 1251. Теперь надо галку Автовыбор каждый раз снимать, вспотеть можно

Дык, сунуть-то можно, только это уже не к PS вопрос, а к акелпаду. Скрипт содержит очень мало кирилицы, поэтому автоопределение будет работать через пень-колоду. Если файл не перемещать и в настройках AP взведена птица запоминания кодировки, то он не будет её менять при открытии файла... в общем это уже в другую тему, наверное, чтобы тут не оффтопить.
 

Цитата:
Ты извини конечно, но это не проблема частного характера,  
я не один здесь на форуме с белым списком.  
Другое дело, что до многих это доходит долго,  
но это уже проблемы многих, но не моя частная.

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

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:33 30-08-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Птица возвращается, ну да не суть... убрал кириллицу сразу, проблема осталась
потому и чиркнул сюда.
 
Добавлено:
Пробелов видно Akelpad невзлюбил, коих много в сценарии, для восприятия и оформления.
Убрал и нормально отображается, но некрасиво )
Только обновился XYplorer из моего выложенного списка, жамкнул скрипт и через несколько секунд уже юзаю обновленный. Все отработало на ура.
 
Добавлено:

Цитата:
было бы неплохо вынести какую-нибудь ссылку в шапку

Добавил просто запись.
Кстати, а местные здесь не практикуют при создании своих сценариев, складывать ссылки на
посты со сценариями? Так сказать, база скриптов руборда )

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 15:43 30-08-2017
KapralBel



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

Цитата:
а местные здесь не практикуют при создании своих сценариев, складывать ссылки на
посты со сценариями?

Попробовать можно
Только вот мне кажется не пойдет
Слишком уж специфические вещи решаются, не сколько "тайна", а больше "а никому и не понадобилось"

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:46 30-08-2017
KLASS



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

Цитата:
а никому и не понадобилось

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

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 16:51 30-08-2017
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Может и поможет )))
Я ведь высказал смою имху )))
Боюсь что в данный момент я выкладывать свои разработки не готов )))
Шоб не наравться на комментарии об моем уровне ))))
Мои задачи решает и меня устраивает

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:00 30-08-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
А зря не выкладываете. Если Лев (а больше и некому) и будет бурчать по привычке без дела,
то это исправимо. А вот подсказку и улучшение собственных наработок можно "огрести"
так сказать для всех польза )

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 17:08 30-08-2017
LevT



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

Цитата:
Тоже думаю, что это вовсе не замусоривание темы, а проблема, скорее всего распространенная,  

 
Предлагаешь в этой теме обучать настройке фаервола?
Мне кажется, что если кто-то хочет от программы выхода в сеть, он должен убрать препятствия с её дороги.
 
При чем тут PS?  

Всего записей: 17744 | Зарегистр. 14-10-2001 | Отправлено: 17:15 30-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