Это тред про лучший Shell, и лучший ScriptingEnvironment в мире - PowerShell.$httpHost = 'api.github.com'$path = '/search/repositories?'$params = 'sort=stars&order=desc&q=language:powershell'$url = "https://$httpHost$path$params"(Invoke-RestMethod $url ).items | foreach { $_.full_name }Q: Что этоA: Это скриптовый язык на платформе .NET, обладающий всей силой .NET, WMI и прочего.Q: Чем он лучше Bash?A: Это полноценный объектно-ориентированный язык программирования, с объектными пайпамиQ: Чем лучше Python?A: На Windows Python работает через задницу, а еще в нем нет пайпов и других скриптовых конструкций, дотнета, и прочего.Q: Только на Windows?A: Пока да. Причем как сам PowerShell, так и его IDE(PS ISE) встроены в винду. Возможно, порт на не такие популярные системы все же случится: http://www.forbes.com/sites/justinwarren/2016/03/08/is-microsoft-about-to-bring-powershell-to-linuxQ: Что почитать?A: На StackOverflow есть ответы на любой вопрос. Еще можно посмотреть тут: http://powershell.org/wp/ebooks/
Вот это охуенный тред, давно мечтаю обмазаться им. Благословляю.Алсо, поясните сразу кто-нибудь за хуйню с необходимостью явно разрешить выполнение скриптов, зачем это нужно с точки зрения безопасности? Чем его скрипты опаснее обычных бинарников, которые подчиняются правам пользователя? Можно ли организовать подписание собственных скриптов без ебли с консольными параметрами каждый раз?
>>742699Скрипты можно генерировать на лету, это первое.Второе - для бинарников в винде вполне себе можно выставить ACL на выполнение для конкретного пользователя/группы. Для рандомного скрипта разве что чтение можно убрать/выставить. Третье - для бинарников на винде тоже можно выставить правило, согласно которому можно выполнять только подписанные.https://technet.microsoft.com/en-us/library/dd723683(v=ws.10).aspxПочему по дефолту стоит запрет выполнения скриптов? Least privilege principle. Кому надо - выставляет разрешение.Рекомендовано делать AllSigned или RemoteSigned execution policy. В таком случае, если денег на сертификат подписей нет, то создается свое CA и свой сертификат для подписи кода(через makecert, очень просто), и на серверах/машинах сертификаты CA и подписи импортируются в хранилище сертификатов. Скрипты перед деплоем подписываются однострочником.Для разработки, чтобы не ебаться, можно выставить самое слабое ExecutionPolicy, впрочем, которое разрешает выполнение всех скриптов.
>>742679 (OP)САЖА, УБОГОМУ ПОДЕЛИЮ КРИВОРУКИХ ИНДУСО-КИТАЙЦЕВ!!!
А что делает эта свинная блевота в моем /pr/? Идите хуя лэкните, недоноски.
>>742737>>742721Уебывайте в говнотреды про пайтон, не мешайте белым людям общаться
>>742715От души расписал все, спасибо, няш.
Побампаю пока всякими административными таскамиQ: Как узнать количество свободной памяти?A: gwmi Win32_OperatingSystem | foreach { "{0:N2} MB free" -f ($_.FreePhysicalMemory / 1024) }Q: Как узнать загрузку процессора?A: gwmi Win32_Processor | measure -property LoadPercentage -Average | foreach { "{0}% CPU in use" -f $_.Average}Q: Как узнать количество свободного места на дисках?A: gwmi Win32_Volume | where { $_.Capacity -and $_.DriveLetter } | foreach { "{0} {1:N0}%({2:N2} GB) free" -f $_.DriveLetter, ($_.FreeSpace / $_.Capacity * 100), ($_.FreeSpace/1024/1024/1024) }
Q: Как подключиться к удаленному компьютеру типа как через SSH?A: Enter-PSSession -ComputerName $IpOrComputerNameЕсли credentials не сохранены в системе, нужно ввести дополнительный параметр -CredentialQ: Как скопировать файл на удаленный хост типа как через scp?A: 1. Надо смонтироват PSDrive: New-PSDrive -Name Z -PSProvider FileSystem -Root \\$Host\MyShare2. Скопировать cp $pathToMyFile Z:\Q: Remoting не работает, что делать?A: Включить. http://www.howtogeek.com/117192/how-to-run-powershell-commands-on-remote-computers/
В PowerShell доступен весь дотнет. Можно вызывать любые методы, загружать любые ассембли.Сами объекты PowerShell являются .NET объектами.Вот пример:[DateTime]::Now.ToString("D", [CultureInfo]::GetCultureInfo("uk"))Выдаст "14 травня 2016 р."
Одна из самых интересный и полезных фич PowerShell это так называемые ScriptBlock'и.По сути это блоки кода. Что-то вроде лямбд.Любой код ограниченный { и } является ScriptBlock.Фишка в том, что эта фича похожа на макросы Lisp, на Perl, а более всего - на Tcl. С помощью нее можно писать свои управляющие конструкции. В следующей ссылке один парень написал аналог C#-овского using:https://davewyatt.wordpress.com/2014/04/11/using-object-powershell-version-of-cs-using-statement/
>>742679 (OP)Тонкота!
ИТТ любители словить ртом струю - люди, посланные нахуй, которые упорно возвращаются.
>>743197пшел под шконку
Это же сраный Перл!
Есть что-то под линупс? Чтоб пайпать не последовательности байт, списки объектов/структур?
>>744408Pash посмотри
>>743472Чего в Перле сраного?
>>743031ВыГлЯдИт -КаК гОвНо
>>743072Кек, нашел чем удивить. Этак и в баше можно.
>>742679 (OP)>Это полноценный объектно-ориентированный язык программирования, с объектными пайпамиПроблема в том, что это не "полноценный ОО язык", а неидиоматичная мешалда из визуалвасика и баша, что отлично было продемонстрировано ИТТ:>[DateTime]::Now.ToString("D", [CultureInfo]::GetCultureInfo("uk"))сравни с >clock format $time %D -locale uk