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

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



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

Цитата:
 
Проверка заголовков файлов: Wget может считывать заголовки файлов (это доступно по протоколам HTTP и FTP) и сравнивать их с заголовкам ранее загруженных файлов, после чего может загрузить новые версии файлов.  
 

пошик умеет?

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
Пошик велик именно тем, что прагматично не заморачивается.
Если нет другого выхода да просто если УДОБНО, то может и wget вызвать, "чай не барин".
 
Заинтересованная сторона может написать модуль-обёртку над wget, отдельный дёргающий wget командлет или при желении самостоятельно реализовать именно ей нужный функционал.
 
 
Добавлено:

Цитата:
пошик умеет?

 
Налицо разногласие между двумя найденными мною англоязычными источниками и (покамест) голословным анонимом, на которого ссылаешься ты.

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



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Стало-быть врут русскоязычные...
Пошик может сравнить размер удаленного и локального файлов?

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
Англоязычные 10 лет назад писали, что зависит от конфигурации сервера:
 
If using the HEAD method is not allowed, or the Content-Length header is not present in the server reply, the only way to determine the size of the content on the server is to download it. Since this is not particularly reliable, most servers will include this information.

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



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хех, англоязычные тоже врут )
5.1 Time-Stamping Usage
 
Добавлено:
Если сервер выдаст, то какая разница... речь то мы о возможностях сабжа ведем, но не сервера отдающего\не_отдающего дату )

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 17:16 26-08-2017 | Исправлено: KLASS, 17:19 26-08-2017
LevT



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

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



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Выбор не велик, по времени, либо по размеру... это по русски?
 
Добавлено:
а может по MD5\SHA1 можно... оно же не важно как, главное чтобы работало и не качало при каждом пинке батника

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 17:26 26-08-2017 | Исправлено: KLASS, 17:31 26-08-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
 
Вот что я за тебя нашёл
https://www.experts-exchange.com/questions/25060085/Powershell-Script-How-to-get-last-modified-datetime-of-a-file-on-website.html
 
проверь на своих удалённых файлах.  Извлекает пошик дату?
 
 
Добавлено:
 

Цитата:
а может по MD5\SHA1 можно...

а оно передаётся твоим сервером?
Если да, то можно.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 17:31 26-08-2017 | Исправлено: LevT, 17:38 26-08-2017
KLASS



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

Цитата:
проверь на своих файлах

Извлекает

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
За тобой удобная тебе реализация. Осилишь?
 
function GetLocalFile {
[OutputType([System.IO.FileInfo])]
    param (
         [string]$remote
    )
....
    return $local
}  

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 17:55 26-08-2017 | Исправлено: LevT, 18:02 26-08-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Дорогу осилит идущий... но я не силен, потому дорога та будет многосерийная )

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 18:00 26-08-2017
LevT



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

Код:
 
filter Get-Newer {  
    [CmdletBinding()]  
    param(  
        [Parameter(ValueFromPipeline)]  
        [string[]]$remote
    )  
    process{
        [DateTime]$localtime = $PSItem | Get-LocalFile | Select -ExpandProperty LastWriteTime
        [DateTime]$remotetime = [Net.HttpWebRequest]::Create($PSItem).GetResponse() | Select -ExpandProperty LastModified
 
        if ($remotetime -gt $localtime){
            Write-Verbose ("Included: {0}" -f $PSItem)
            Write-Output $PSItem
        } else {
            Write-Warning ("{0} is not newer, skipping" -f $PSItem)        
        }
    }
}  
 
 
 
не отлаживал. ибо не на чем

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



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

Код:
 
$root = 'C:\Downloads'
 
function Get-LocalFile {  
[OutputType([System.IO.FileInfo])]  
    param (
         [Parameter(ValueFromPipeline)]  
         [string]$remote  
    )  
    $local =  
                  join-path $root ($remote -split '/')[-1] |
                                                                                 get-item

    return $local  
}  
 
Import-CSV C:\soft.txt | Get-Newer | Start-BitsTransfer
 

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

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 11:33 27-08-2017 | Исправлено: LevT, 11:56 27-08-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Светлее не стало, как работает функция Get-Newer, потому как на нее матерится

Цитата:
Имя "Get-Newer" не распознано как имя командлета... бла-бла

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
Имя должно быть загружено в пространство имён
Или вместе с взятым откуда-то модулем, или напрямую определено выше по тексту скрипта  
 
 
Добавлено:
А поскольку Get-Newer зависит от Get-LocalFile, то место для него сейчас определено однозначно: не выше и не ниже.

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



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

Цитата:
Имя должно быть загружено в пространство имён  

А по русски )

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



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

Дык ниже я написал, что это значит.
Чтобы вызвать функцию, надо, чтобы среда исполнения знала её определение. Это везде, примерно во всех языках.
 
 
Добавлено:
 
Посмотри, что чего вызывает, и расположи в порядке.  
Единственно правильном в данном случае.

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



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Суть то я понял, не понял как это реализовывается? Вернее не ведаю.
Не читал я книжек по пошику...
Что это за переменная $local?

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тот "живой" объект типа [System.IO.FileInfo], что получается внутри powershell в результате

Код:
 
Get-Item -Name (join-path $root ($remote -split '/')[-1])
 

Пошик - вернее дотнет - научен брать свойства такого объекта "из реального мира" (т.е. в данном случае из файловой системы)

Код:
 
$local | Select -ExpandProperty LastWriteTime
   или
 
$local.LastWriteTime
 
(можно писать так или эдак, по вкусу)  
 

 
А также может вызывать его методы:
 

Код:
 
Get-Item c:\pagefile.sys  | Get-Member -Type method | Select Name
Подробнее...
 

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



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

Цитата:
Имя должно быть загружено в пространство имён  

Загадками я все одно не пойму, зря время потеряешь.

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