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

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



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

Цитата:
его может и не быть

Для этого просто запускаю taskmgr.
 
Добавлено:

Цитата:
Для этого условия - вот так:  

Низкий поклон до земли.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 14:47 26-09-2017
LevT



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

Цитата:
В моём представлении алгоритм нужен такой:
1. Проверка, что к Y: ничего не подключено
2.Если нет (не подключено) - переход к 3;  если да - переход к 5
3. Найти и подключить на Y: первый файл PR.VHD
4. Возврат к 1
5. Проверка, что к W: ничего не подключено
6. Если нет (не подключено) - переход к 7;  если да - переход к end
7. Найти и подключить на W: первый файл PROG.VHD
8. Возврат к 5
9. end (закончить работу)

 
 

Цитата:
 
Имей в виду, что сначала придумывать алгоритм в таком виде, а потом ещё и переводить его - несуразный оверхед
Алгоритмы для павершела придумываются иначе:
 
$data=@(
    @{letter='Y';file='pr.vhd'}
    @{letter='W';file='prog.vhd'}
)  
 
из исходных данных взять множество букв |
   выделить из него те буквы, которые не содержатся в массиве
(Get-Volume).DriveLetter |
         XОЧУ для каждой из них найти в корне томов первый файл VHD с нужным именем  |
             смонтировать каждый найденный файл с нужной буквой

 

 
Кстати, алгоритм оказался не совсем точен - именно из-за излишней детализации (основанной на неверном допущении).
Созданный Primo RAM Disk SE том не представлен в результатах Get-Volume
 
Принимаются подсказки, как добавить к массиву букву рамдиска (и найти все прочие подобные "левые" буквы)  ))

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



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

Код:
 
Function PendingReboot
{
    If (Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" -ErrorAction Ignore)
    {
        return $true
    }
    If (Get-Item "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -ErrorAction Ignore)
    {
        return $true
    }
    If (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -ErrorAction Ignore)
    {
        return $true
    }
    try
    {  
        $util = [wmiclass]"\\.\root\ccm\clientsdk:CCM_ClientUtilities"
        $status = $util.DetermineIfRebootPending()
        If(($status -ne $null) -and $status.RebootPending)
        {
            return $true
        }
    } catch{}  
    return $false
}
Function Wuauserv-Status
{
    $getservice = Get-Service -Name wuauserv
    $getservice.WaitForStatus('Stopped', '00:30:00')
    return $true
}
If ((PendingReboot -eq $true) -and (Wuauserv-Status -eq $true))
{
    <# Get-ChildItem -Path $env:SystemRoot\SoftwareDistribution\Download -Force -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue #>
    write-host 111
}
Else
{
    write-host 222
}
 

Как сделать так, чтобы перезагрузки ПК пользователем вручную скрипт начал опять проверять значения реестра и службы?

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



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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Этот код итак в Планировщике будет, запускаясь раз в месяц. А надо теперь, чтобы после перезагрузки опять отрабатывался.

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
нагуглилось (не тестил)
C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup  - сюда положить
 
Если сходу не сработает, то можно обложить строчками.
Start-Transcript -Path c:\ps.log
....
Stop-Transcript
 
Возможно, что скрипт требует элевации, тогда есть реализация 'sudo' (тестил, работает)
Надо будет воспользоваться функцией Start-Elevated, которую положить в профиль.
 
 
Добавлено:
farag
ну и через планировщик если срабатывает вручную - что мешает триггер сделать нужный?

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 16:40 03-10-2017
2as

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

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

через реестр, например:
 
1. Постоянный автозапуск программы при входе в систему:  
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\Run]  
Программы, которые запускаются в этом разделе, запускаются для всех пользователей в системе.  
 
2. Из этого раздела запуск программы однократный при входе пользователя. После запуска ключ из данного раздела автоматически удаляется.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\RunOnce]
 
подробнее, например, здесь >>

Всего записей: 3482 | Зарегистр. 09-09-2003 | Отправлено: 17:40 03-10-2017
farag



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

Цитата:
шедулер

Он через "ск' читается. Там нет "sh".

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 18:01 03-10-2017
YuS_2



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

Цитата:
Он через "ск' читается. Там нет "sh".

Это смотря где... в каком-нибудь Брауновском университете, возможно и через "ск" лопочуть, а вот в Оксфорде (вот же невежи, английского не знают совсем!), говорят через "ш" (ну, это в нашем понимании...), а вообще, можно и проще сказать - планировщик, чтобы не спорить на ровном месте. Если это, конечно, имеет такое огромное значение в Вашем вопросе...
 
Добавлено:
farag

Цитата:
А надо теперь, чтобы после перезагрузки опять отрабатывался.

А чем шедулер не устраивает? Он может и после перезагрузки запускать программы - что не так?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:57 03-10-2017 | Исправлено: YuS_2, 18:58 03-10-2017
farag



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

Цитата:
А чем шедулер не устраивает?

Если с самого начала: есть папка, куда скачиваются обновления и лежат мертвым грузом (если речь о 8.1 все-таки). Надо это дело очищать раз в месяц. Устанавливаю дату на второй четверг каждого месяца. Но нужна проверка на то, чтобы во время удаления содержимого, обновления не ставились, иначе все похерится, и ОС не ожидала перезагрузку, чтобы опять же не поставить обновления. Все проверки делаю, но что делать, если ОС ожидает перезагрузки? Получается, мне надо дать ОС все поставить, чтобы пользователь перезагрузился, и только тогда можно папку очищать. Тут я уже сломался, как такое наваять.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 22:54 03-10-2017
PhoenixUA



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
Вы пытаетесь заново изобрести WSUS?
 
По поводу перезагрузки:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations

Всего записей: 2184 | Зарегистр. 17-11-2005 | Отправлено: 23:15 03-10-2017
LevT



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

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 23:18 03-10-2017
2as

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

Цитата:
Тут я уже сломался, как такое наваять.
 

Элементарно, Ватсон.
Что мешает клиенту перед началом обновления, на сервере (в каталоге/реестре), создавать файл/переменную, по окончании обновления - удалять.
Перед удалением папки с обновлениями проверять наличие файла-ключа. Ключ есть - кто-то обновляется (или попытка обновления не завершена), значит удалять обновы нельзя.
Если клиентов много - пусть каждый создает файл со своим именем - тогда будет точно известно, какой комп  еще не закончил цикл обновлений.
В этом случае проверка на возможность удаления каталога с удалениями будет заключаться в проверке наличия/отсутствия файлов в каталоге-ключе.
 
Добавлено:
Ах, да, забыл, что вы не любите плодить файлы ... )

Всего записей: 3482 | Зарегистр. 09-09-2003 | Отправлено: 03:57 04-10-2017 | Исправлено: 2as, 04:01 04-10-2017
farag



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

Цитата:
Вы пытаетесь заново изобрести WSUS?

Откуда он возьмётся касательно домашних пользователей? А на работе его не будет, так как второй админ ничего не хочет делать, чтобы улучшить жизнь людей. Не будь меня, до сих пор стояли бы XP с 6 IE и Core 2 Duo. Оттого и по сути ухожу из отдела уже на управленческую должность.
2as
Хорошо, пкумекаю.
 
Добавлено:

Цитата:
Что мешает клиенту перед началом обновления, на сервере (в каталоге/реестре), создавать файл/переменную, по окончании обновления - удалять

Ну, создам я ключ в реестре. Я не очень понимаю, как это поможет делу. Лучше пример кода дать.

Цитата:
перемещаемые профили на логон-батниках

А как, кстати, надо?

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



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

Цитата:
Ну, создам я ключ в реестре. Я не очень понимаю, как это поможет делу.

Есть семафор, метка в реестре или файл в папке - значит кто-то выполняет обновление, не удаяем файлы
а у пользователей скрипт начинается с создания этого семаформа, и заканчивается увалением
 

Цитата:
А как, кстати, надо?

Свойства пользователя, там есть такая опция, но к сожалению я в отпуске и показать где в АД она есть пока не могу

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:30 04-10-2017
2as

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

Цитата:
А как, кстати, надо?
 

Если речь идет о Линуксе, в Linux-Calculate перемащаемые профили реализованы "из коробки" и нечего мудрить не нужно.
Если речь идет о Windows, то это подробнейшим образом документировано.
например, здесь >>
 

Цитата:
второй админ ничего не хочет делать,

наверное, не мотивирован

Цитата:
ухожу из отдела уже на управленческую должность

Теперь вам лишь остается правильно подобрать мотивацию второму админу )))

Всего записей: 3482 | Зарегистр. 09-09-2003 | Отправлено: 11:04 04-10-2017 | Исправлено: 2as, 11:12 04-10-2017
YuS_2



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

Цитата:
у пользователей скрипт начинается с создания этого семаформа

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

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



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

Цитата:
А лучше с проверки доступности каталога с обновлениями, нет доступа

Можно и так, но случаи бывают разные  
Возникнут проблемы с тем что проверка то началась а семафор не выставлен - лучше вернуться к моему предложению

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:03 04-10-2017
farag



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

Цитата:
наверное, не мотивирован  

Фармит в какую-то хрень на эмуляторе Android в 3 окна сразу и глушит литрами технический спирт, не в силах встать. XP и кнопочные телефоны forever, машину не моет, сам не моется и не любит, когда что-то новое выходит. Застрял окончательно в 2001 году. А, еще ненавидит вкладки в браузере: только 100 окон, только хардкор!

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 12:50 04-10-2017 | Исправлено: farag, 12:52 04-10-2017
YuS_2



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

Цитата:
Возникнут проблемы с тем что проверка то началась а семафор не выставлен

Да какие тут могут быть проблемы? Доступен каталог - ставим семафор и обновляемся, недоступен - висим в цикле, либо запускаемся повторно через время...
Семафор, в любом случае, будет выставлен только непосредственно перед началом обновления.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:12 04-10-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