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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Не хотелось плодить кучу файлов. Отдельно функцию ты так запустить не можешь.
 
Добавлено:
Хотя не, можно и функцию:
 
Start-Process -FilePath (Get-Command powershell).Definition -ArgumentList ${function:Test} -Verb RunAs
 
Добавлено:
С параметрами только неясно.

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



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

Цитата:
Не хотелось плодить кучу файлов. Отдельно функцию ты так запустить не можешь.  

 
не понимаю, в чём проблема положить в PS профиль нужные функции?.. импорт нужных модулей и чего душа запросит
не зря профили придуманы
 
 
Добавлено:
 
А когда это не нужно, запускаешь powershell или сессию -NoProfile
 
 
Добавлено:
 
кстати есть крайне удобная штука для управления профилями - модуль https://github.com/zloeber/OhMyPsh
Install-Module OhMyPsh
 
 

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Ну смотри.
Есть абсолютно новый домен на 2016-м, туда надо мигрировать с существующего домена 2008R2 пользователей, их данные, почтовые ящики Exchange, данные бизнес-приложений и пр.
И таких миграций несколько сотен.
Мне каждый раз ещё и PS-профиль на несколько серверов копировать? Да и не пойму, чем мне это поможет.
А так коллеги тупо копируют с определённой шары один скрипт, правят пару переменных и запускают от админа.

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PhoenixUA
а так коллеги тупо скопируют с определённой шары созданный тобой профиль в  
 
PS >$PROFILE.AllUsersAllHosts
C:\windows\System32\WindowsPowerShell\v1.0\profile.ps1
 
или ты им поможешь )
 
 
Добавлено:
 
Профилем ты добавляешь свои ништяки к изкоробочному пошику  
А можно ещё и конфигурацию сессии сделать для коллег,  
      чтобы у них в глазах не рябило от изкаробочного пошика )
 
 
Добавлено:
 
идеология такая, что велит завязывать с пониманием "делаем скрипт для юзера"
делаем инструмент для подмастерий!  \
   точнее, набор инструментов
так, что один инструмент-командлет делает ровно одну вещь.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 22:53 11-10-2017 | Исправлено: LevT, 23:00 11-10-2017
PhoenixUA



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня нет подмастерий, есть люди, которые в Powershell мало понимают и работают по чек-листам с картинками.

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



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

Если бы я был "начальником проекта", я бы научил их. Для себя же, любимого!
А чтобы в глазах у них поначалу не рябило - бывают кастомные конфиги сессии.

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



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

Цитата:
Do PowerShell script files have a certain file extension which (when double clicked) will be executed automatically (similar to traditional *.bat files)?

 
1)
 Yes. "*.ps1" BUT You cannot run Powershell scripts with a double click. If you need to do something like this you can use shortcuts with the complete command line to run Powershell console including the script path.

 
2)  
No — you can't automatically launch the powershell scripts like batch files. You have to call them from powershell, or a batch file, or a shortcut file etc. Your command line to use would be powershell.exe -file , and you would use that for your shortcut, batch file, etc.

 
источник:
https://powershell.org/forums/topic/some-basic-ps-questions/
 
 
Добавлено:
 
powershell /?
 
-PSConsoleFile
    Loads the specified Windows PowerShell console file. To create a console
    file, use Export-Console in Windows PowerShell.
 
Добавлено:
 
И охота же юзать инструмент наполовину?
Это всё равно как...  скажем, рулить AD и игнорить существование трастов

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

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

Цитата:
Случайно наткнулся  

Вот например реализация (2014 год)
https://gallery.technet.microsoft.com/PS2EXE-Convert-PowerShell-9e4e07f1
 
И, насколько помниться, в PowerGUI (Script Editor) в меню "Инструменты" -> Compile Script...
так же компилил exe-файл из PS - скрипта.
 
Иногда может пригодится...

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2as
 
И впрямь интересно, особенно верхний скрипт.
А то компилить с гуями лучше уж сапиеном - но это неспортивно и монструозно.
 последствия павергуя сейчас непредсказуемы: слишком давно он не поддерживается.
 

Цитата:
 Furthermore “script execution” have to be allowed (see cmdlet: set-execultionpolicy).

Кстати, вот это для многих засада, даже в здешнюю шапку попало.
 
Можно добавить параметр  
powershell -File profile.ps1 -ExecutionPolicy Bypass -Command "& {Set-UpMyWishes}"
 
 
Добавлено:
 
Что мне не нравится в предложенном выше это необходимость обращения к гуйному конструктору ярлыка и несовершенство конструктора, имеющегося в проводнике.
 
Наверняка где-то уже есть специальный конструктор командной строки "powershell ...", написанный на сабже.
Но может ключи этой команды - как раз то, что имеет смысл вызубрить?

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди, предлагаю проект достойный руборда!
Есть модуль Lability,  для создания Hyper-V хоста с кучей виртуалок (под капотом  DSC)
 
Вот пошаговое введение
http://blog.mscloud.guru/2016/09/17/create-your-virtual-lab-environment-with-lability-howto/
 
Одна незадача:
Командлеты из комплекта знают и умеют скачивать только EVAL винду.
 
План:  
1) Извратить эти командлеты своими прокси-функциями, научить варезной винде.
там таки можно зарегистрировать сторонний дистр (достаточно положить в папочку, снабдив чексуммой и фальшивым uri для перезакачки)
 
2) Варезную винду на руках у наших людей каталогизировать вот таким образом
 
Приглашаю принять участие для начала в п.2

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



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

Код:
 
Foreach ($dir in @("E:","F:","G:"))
{
    IF (Test-Path $dir\Программы\Прочее\Office_task.bat)
    {
        Copy-Item $dir\Программы\Прочее\Office_task.bat D:\Программы\Прочее -Force
        break
    }
    IF (Test-Path $dir\Программы\Прочее\Office.xml)
    {
        Copy-Item $dir\Программы\Прочее\Office.xml D:\Программы\Прочее -Force
        break
    }
}
 

Правильно ли использовать два раза break? Или, может, надо exit?..
Или так?

Код:
 
Foreach ($dir in @("E:","F:","G:"))
{
    IF (Test-Path $dir\Программы\Прочее\Office_task.bat)
    {
        Copy-Item $dir\Программы\Прочее\Office_task.bat D:\Программы\Прочее -Force
    }
    IF (Test-Path $dir\Программы\Прочее\Office.xml)
    {
        Copy-Item $dir\Программы\Прочее\Office.xml D:\Программы\Прочее -Force
    }
    break
}
 

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
 
по-моему, без разницы
Заодно перечитал help about_break sh: всё в целом знаю, но вот это вот резануло:  
 
    Windows PowerShell does not limit how far labels can resume execution. The  
    label can even pass control across script and function call boundaries.
 
Нафига? Не придумывается полезный пример.
 
 

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите менее уродливый путь получить массив (hostnames в данном случае)
Цель такая, чтобы входные данные шли голым текстом прямо в скрипте без лишних кавычек и запятых
(они неизбежны, если синтаксически правильно определять массив)
 
Так, как ниже:

Код:
 
$data = ('
fnd-zharovnin
fnd-tyshenko
corp2r133-1
corp2r133-media8
cor2r133-media7
corp2r133-media6
fnd-video12345
fnd-videoteka01
fnd-videoteka20
fnd-proskura
fnd-chekanihin
fnd-videoteka18
fnd-matveev
fnd-116-2
corp2r133-media2
copr2r133-media3
cor2r133-media4
corp2r133-media5
')
 
$badhostnames = ($data.Split("`n"))[1..18]                                 #бью входной текст (String) построчно и удаляю первый и последний пустые элементы
$hostnames = $badhostnames | % {$_.Remove($_.Length-1)}   #удаляю непонятную бяку в конце каждого имени
 
$otdel = $hostnames | Resolve-DnsName | select name,ipaddress
 

 
Вот такой бардак приходится причёсывать ))

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
 
$data = @'
fnd-zharovnin
...
corp2r133-media5
'@  
$hostnames = $($data -split "`n").TrimEnd("`r")

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PhoenixUA
 
Уже допёр, как ещё проще и фэншуйней  
 
$computers = $data | ConvertFrom-Csv -Header Hostname  
$otdel = $computers.Hostname | Resolve-DnsName | select Name,IpAddress

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



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

одна из серьезнейших книг
 
не путайте с любым фуфлом.где это слово в названии!
 

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



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

https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/

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



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

Короче кто хочет быстро осилить DSC -делайте  
Install-Module Lability
 
я в целом за пару дней разобрался с этой штукой, готов отвечать на вопросы.

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



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем привет!
Кто знает, подскажите как запустить удаленно через Powershell допустим bat'ник с учетными данными другого доменного пользователя?
Без дополнительных настроек на том ПК, PowerShell Remoting есть, но нужно запускать службу WinRM.

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
techobsl
через PS это ремотинг
надо сказать на удалённом компе Enable-PSRemoting, и будет щастье.
 
А иначе - сторонние проги, которым неважно как они запущены:
psexec
remoteexec

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 10:18 08-11-2017 | Исправлено: LevT, 10:19 08-11-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