Комментарии 172
Появился интерес к Powershell после прочтения статьи.
На самом деле, я больше всего старался добиться именно этого эффекта.
Расскажите мне пожалуйста, чем вызвано такое поведение. Я для себя так и не смог это объяснить :-)
Есть скрипт на повершеле(назовем его test.ps1):
Запускаю его из оболочки повершела:
В ответ получаю следующее:
Есть скрипт на повершеле(назовем его test.ps1):
"Arguments: $($args.count)"
$args
Запускаю его из оболочки повершела:
.\test.ps1 -arg.txt
В ответ получаю следующее:
Arguments: 2
-test
.tas
точнее в данном примере в ответ получу
Arguments: 2
-arg
.txt
Насколько я понял, проблема заключается в знаке — Из за этого знакак шелл начинает косить, потому что считает это свичевым оператором, поэтому разбирает аргс отдельно а .txt отдельно.
Наберите другой пример:
В итоге, становится ясно, что есть несколько типов аргументов — «Свитчи» и просто аргументы
Подробности можно нагуглить
Наберите другой пример:
PS D:\live> .\test.ps1 arg.txt -rrr.ds.sd.fa.ds test .\test.ps1
Arguments: 5
arg.txt
-rrr
.ds.sd.fa.ds
test
.\test.ps1
В итоге, становится ясно, что есть несколько типов аргументов — «Свитчи» и просто аргументы
Подробности можно нагуглить
У меня немного другое получается:
PS D:\live> .\test.ps1 -arg.txt
Arguments: 2
-arg
.txt
PS D:\live>
Прочитать за 4 минуты — это круто…
Извините, что так быстро читаю. В следующий раз подожду 5 часов 7 минут пока дойдет до вас.
O'rly? Вы с такой скоростью читаете техническую литературу?
В любом случае можно обойтись без оскорблений.
В любом случае можно обойтись без оскорблений.
За четыре минуты, пусть даже три вполне реально прочитать данный текст.
Нашли к чему придраться. Совсем у народа крыша едет сегодня.
Нашли к чему придраться. Совсем у народа крыша едет сегодня.
Автор забыл упомянуть что одним из главных козырей Powershell это полная интеграция со всеми новыми продуктами от Microsoft начиная с 2007 года. Ни один продукт не выходит без интерфейса к Powershell.
Даже такие конкуренты Microsoft как VMWare и IBM взяли Powershell на воружение и управляют своими продуктами с помощью него.
Даже такие конкуренты Microsoft как VMWare и IBM взяли Powershell на воружение и управляют своими продуктами с помощью него.
Еще интересные возможности Powershell
xaegr.wordpress.com/2010/01/10/perl2ps/
И полезные русские ресурсы по языку
xaegr.wordpress.com/2011/01/19/new-russian-powershell-resources/
xaegr.wordpress.com/2010/01/10/perl2ps/
И полезные русские ресурсы по языку
xaegr.wordpress.com/2011/01/19/new-russian-powershell-resources/
Там уже пофиксили пробел/enter в more? Последний раз, когда я его (PS) видел, он у меня вызвал отвращение, сравненимое с cmd.
Хм. Вообще-то more — это как раз приблуда, которая осталась со времён CMD. И даже раньше. Сейчас тут есть Get-Content.
То есть вместо dmesg|less я должен писать Get-Eventlog «System» | fl | Get-Content?
Обожаю клавиатурные упражнения
Обожаю клавиатурные упражнения
Alias gc Get-Content
Это стандартная приблуда, вшита в павершелл. Короче, чем мор.
Я не поленился, залогинился на последний exchange в моём legacy хозяйстве.
Унесите, пожалуйста. Get-AgentLog|more хоть криво, но листает.
2003/Exchange 2007 up to date.
[PS] C:\Documents and Settings\amarao>Get-AgentLog|gc Get-Content : The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of the parameters that take pipeline input. At line:1 char:16 + Get-AgentLog|gc <<<< + CategoryInfo : InvalidArgument: (Microsoft.Excha...g.AgentLogEn try:PSObject) [Get-Content], ParameterBindingException + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Command s.GetContentCommand
Унесите, пожалуйста. Get-AgentLog|more хоть криво, но листает.
2003/Exchange 2007 up to date.
Фак, а у меня этого командлета нет. Можете сделать пустить акшин лог на гет-мембер, чтобы мне инфу дать о том, что за тип он возвращает?
Get-AgentLog|Get-Member TypeName: Microsoft.Exchange.Management.AgentLog.AgentLogEntry Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() Action Property Microsoft.Exchange.Transport.Agent.AntiSpam.Commo... Agent Property System.String Agent {get;set;} Diagnostics Property System.String Diagnostics {get;set;} Event Property System.String Event {get;set;} IPAddress Property System.Net.IPAddress IPAddress {get;set;} MessageId Property System.String MessageId {get;set;} P1FromAddress Property Microsoft.Exchange.Management.AgentLog.AgentLogEn... P2FromAddresses Property System.Collections.Generic.List`1[[Microsoft.Exch... Reason Property System.String Reason {get;set;} ReasonData Property System.String ReasonData {get;set;} Recipients Property System.Collections.Generic.List`1[[Microsoft.Exch... SessionId Property System.String SessionId {get;set;} SmtpResponse Property Microsoft.Exchange.Data.Transport.Smtp.SmtpRespon... Timestamp Property System.DateTime Timestamp {get;set;}
cmdlet | out-host -paging
Именно та же самая задница, что при more. При нажатии на enter он не просто скроллит текст на одну строчку, но и повторяет подсказку.
Писец как удобно.

Писец как удобно.

А, теперь понятно.
Нет, все так же.
Мне, честно говоря, проще в | ogv
Нет, все так же.
Мне, честно говоря, проще в | ogv
Ну если совсем жизнь не мила — ставить pscx
blogs.technet.com/b/heyscriptingguy/archive/2010/07/09/hey-scripting-guy-tell-me-about-powershell-community-extensions.aspx
там есть
blogs.technet.com/b/heyscriptingguy/archive/2010/07/09/hey-scripting-guy-tell-me-about-powershell-community-extensions.aspx
там есть
Мне жизнь вполне мила, я расстаюсь с майкрософтом со скоростью примерно 10% в год. Исходя из общего прогресса я закончу с ним возиться примерно через 2 года, таким образом я решу все проблемы в майкрософтовских продуктах, и мне больше не придётся ругаться при виде очередного уродливого more имени MS.
У меня gc в Powershell под Windows 7 и Windows Server 2008 R2 стандартно превращается в Get-Content.
> (О, кстати, я вам не сказал, но в PS, на мой взгляд, лучше всего смотрится текстовый редактор vim. Возможно кто-то назовёт меня настоящим извращенцем, но на самом деле, я уже не раз пытался использовать что-то другое, но всегда возвращался к виму. Попробуйте и вы. Его не просто изучить с нуля, но если вы поймёте основы, то сможете очень быстро и удобно редактировать тексты.)
Читать как:
(О, кстати, я вам не сказал, но в PS, на мой взгляд, лучше всего смотрится интерпретатор bash. Возможно, кто-то назовет меня настоящим извращенцем, но на самом деле, я уже не раз пытался использовать что-то другое, но всегда возвращаюсь к башу. Попробуйте и вы. Его не так просто изучить с нуля, но если вы поймёте основы, то сможете очень быстро и удобно… делать что угодно.)
Извините, не удержался :-)
Вы еще забыли упомянуть основную вкусность PS — фактическая работа с .Net, а значит, можно прямо вызывать любой объект .net и использовать его в скрипте. Это — невероятно удобно.
Читать как:
(О, кстати, я вам не сказал, но в PS, на мой взгляд, лучше всего смотрится интерпретатор bash. Возможно, кто-то назовет меня настоящим извращенцем, но на самом деле, я уже не раз пытался использовать что-то другое, но всегда возвращаюсь к башу. Попробуйте и вы. Его не так просто изучить с нуля, но если вы поймёте основы, то сможете очень быстро и удобно… делать что угодно.)
Извините, не удержался :-)
Вы еще забыли упомянуть основную вкусность PS — фактическая работа с .Net, а значит, можно прямо вызывать любой объект .net и использовать его в скрипте. Это — невероятно удобно.
CD (= Set-Location) не даёт списка файлов. Даёт LS и DIR
Там можно настроить юникод? Я как-то пробовал пускать скрипт, печатающий в UTF-8, но даже chcp не давал желаемого эффекта, вместо букв выводились кракозябры.
ненайдя топиков на хабре за столь внушительное время (мб плохо искал) наконец, кто то заикнулся о PS… рисковано относительно сидалища и гиены огненной…
PS-его имя нельзя произносить вслух, а то он услышит и покарает…
сделаю тупое предположение/отступление невдаваясь в подробности… насколько я слышал в Seven и 2008 запихали толи эмулятор unix толи само ядро…
ЗЫ: слышал звон, незнаю где он… хоть убейте)
спасибо, интерес так сказать возбудился… или пробудился…
PS-его имя нельзя произносить вслух, а то он услышит и покарает…
сделаю тупое предположение/отступление невдаваясь в подробности… насколько я слышал в Seven и 2008 запихали толи эмулятор unix толи само ядро…
ЗЫ: слышал звон, незнаю где он… хоть убейте)
спасибо, интерес так сказать возбудился… или пробудился…
фига я обложался, целая ветка есть )))
Про то, что вы слышали, читать тут: ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D1%8B_Microsoft_Windows_%D0%B4%D0%BB%D1%8F_UNIX
Добро пожаловать.
Я - страшный дух будущего.
Вы были правы. Мне жаль, что вас заминусовали 11 лет назад. Получите плюс в карму и наши извинения.
Это хороший ход MS. Администрирование с помощью командной строки во многих случаях намного проще. Может еще и файлы Power-config сделают (т.е. полная настройка системы файлами конфигурации)?
Легче написать оболочку к unix ядру тогда (:
Да, большое спасибо MS за PS. Теперь у вендотроллей, считающих отсутствие командной строки преимуществом ОС, будет на один аргумент меньше.
И у линупс-троллей, считающих, что в Windows нет командной строки ;)
Ну, этот аргумент был более объективным. Тем больше заслуга авторов PoSH в его устранении.
(за неимением кармы спрошу здесь)
> Что же, мой неинтересующийся друг, надеюсь, я дал тебе что-то интересное, и ты теперь возьмёшься за покорение интерпретатора, который действительно поможет тебе упростить твою нелёгкую программерскую жизнь и даст тебе возможность автоматизировать больше и быстрее.
По google://power shell for linux только форумы msdn со сравнениями PoSH и bash и толстыми трололо. Подскажите, пожалуйста, что-нибудь стоящее… кроме установки пиратки в виртуальную машину. :D
(и ещё раз будь проклят тот человек, который посчитал меня недостойным больше чем одного коммента в час)
(за неимением кармы спрошу здесь)
> Что же, мой неинтересующийся друг, надеюсь, я дал тебе что-то интересное, и ты теперь возьмёшься за покорение интерпретатора, который действительно поможет тебе упростить твою нелёгкую программерскую жизнь и даст тебе возможность автоматизировать больше и быстрее.
По google://power shell for linux только форумы msdn со сравнениями PoSH и bash и толстыми трололо. Подскажите, пожалуйста, что-нибудь стоящее… кроме установки пиратки в виртуальную машину. :D
(и ещё раз будь проклят тот человек, который посчитал меня недостойным больше чем одного коммента в час)
Вы недооцениваете вендотроллей. У них стало минимум на 2 аргумента больше:
-вот не было нормальной коммандной строки, а теперь есть!
-а у нас коммандная строка объектная, а не просто текстово-конвеерная.
-вот не было нормальной коммандной строки, а теперь есть!
-а у нас коммандная строка объектная, а не просто текстово-конвеерная.
покажите мне, как работает PS по ssh. RDP не предлагать.
Windows ТЕН ждем, пережидая в linux
Для «предпочитателей» FAR'а есть плагин PowerShellFar.
С консолью, отладкой и прочими вкусностями.
Брать тут: code.google.com/p/farnet/
С консолью, отладкой и прочими вкусностями.
Брать тут: code.google.com/p/farnet/
Извиняюсь за оффтоп, но через PS можно проверить состояние сетевого соединения? (не пингом ресурса)
Вторую неделю как пререшёл на PowerShell (совместно с Console 2), в основном из-за полной поддержки UTF-8, радуюсь, но вот вчера заметил, что запятая "," в параметрах строки (в частности при вызове python скриптов) интерпретируется как сепаратор аргументов, что очень расстроило, не знаете как можно обойти/вылечить?
Различные кавычки пробовали? Можно конкретный пример?
a`,b`c или «a,b,c» пробовали?
Это, конечно, будет работать, но это не подходит для уже существующих, а тем более для кросс-платформенных связок/вызовов из функций/модулей, которые отлично работали в cmd.exe, но перестали работать в powershell, из-за того, что изменилась концепция интерпретации символа «запятая» в строке аргументов. Выходом была бы или настройка, отменяющая использование запятой в качестве сепаратора, либо собственный «препроцессор» обработки командной строки, но я пока не нашёл, как это реализовать.
Что же вы про Windows PowerShell Integrated Scripting Environment (ISE) забыли? Чтобы запустить ее напишите ISE в поисковой строке меню «Пуск».
Собственно:


Эт не кавайно. Эт не по-джедайски. В ИСЕ столько рюшечек понавинтили, что тормозов больше чем надо стало. ИМХО
На глаз она не тормозит, а по удобству с не менявшимся со времен как минимум 2000 винды консольным окном сравнений не может быть никаких.
Потому что ISE умеет:
1. Человеческие копирование/вставку
2. Встроенное редактирование скриптов (не однострочных, а нормальных таких больших скриптов)
3. Табы. Человеческие табы!!! В винде! Из коробки!!!
4. Отладку
Консольное окно это тот случай, когда его использование — не олдскул, а просо олд.
Потому что ISE умеет:
1. Человеческие копирование/вставку
2. Встроенное редактирование скриптов (не однострочных, а нормальных таких больших скриптов)
3. Табы. Человеческие табы!!! В винде! Из коробки!!!
4. Отладку
Консольное окно это тот случай, когда его использование — не олдскул, а просо олд.
Консольное окно — это когда по ssh на винду заходишь
еще оно расщширяется на самом posh и есть готовый набор расширений code.msdn.microsoft.com/PowerShellPack
В консольном варианте хорошее автодополнение команд и параметров по TAB делается с помощью Powertab
thepowershellguy.com/blogs/posh/pages/powertab.aspx
thepowershellguy.com/blogs/posh/pages/powertab.aspx
Мне одному вывод виндового dir по сравнению с линуксовым ls кажется убожеством? Или это дело привычки?
О, мы Вас ждали — habrahabr.ru/blogs/powershell/113913/#comment_3667637
Хорошо, скажите как мне посмотреть содержимое текущий директории без дополнительной информации о файлах, только имена. И чтобы выводилось не по одному имени на строку, а на всю ширину окошка. Серьезно, неужели ls -l вам нужен чаще, чем просто ls? Ну и еще хотелось бы цветную выдачу.
И да, я ничего не имею против PS и рад этой статье потому, что давно хотел поверхностно познакомиться, но лень было искать.
И да, я ничего не имею против PS и рад этой статье потому, что давно хотел поверхностно познакомиться, но лень было искать.
Если честно, понятия не имею. Я иконки в проводнике таскаю.
То есть вы обвиняете меня в троллизме за то, что я сказал, что линкусовый ls удобнее виндового dir'a, хотя ни одним из них не пользуетесь?
Вы не сказали что в линуксе удобней, Вы сказали что в винде убожество, а это немного разные вещи.
Во-первых, я сказал что мне только кажется :)
А во-вторых, лично для меня он настолько не удобнее, что это слово, опять-таки в моем понимании, вполне подходит.
И в-третьих, вы не ответили на вопрос.
А во-вторых, лично для меня он настолько не удобнее, что это слово, опять-таки в моем понимании, вполне подходит.
И в-третьих, вы не ответили на вопрос.
Странно, вот Вы линуксоид, а маны не читаете:
DIR [диск:][путь][имя файла] [/A[[:]атрибуты]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]порядок сортировки]] [/P] [/Q] [/R] [/S] [/T[[:]время]] [/W] [/X] [/4]
[диск:][путь][имя файла]
Диск, каталог или имена файлов для включения в список.
/A Отображение файлов с указанными атрибутами.
атрибуты D Каталоги. R Файлы, доступные только для чтения.
H Скрытые файлы. A Файлы, готовые для архивирования.
S Системные файлы. I Файлы с неиндексированным содержимым.
L Точки повторной обработки. - Префикс "-" имеет значение НЕ.
/B Вывод только имен файлов.
/C Применение разделителя групп разрядов при выводе размеров файлов.
Используется по умолчанию. Чтобы отключить применение
разделителя групп разрядов, задайте ключ /-C.
/D Вывод списка в нескольких столбцах с сортировкой по столбцам.
/L Использовать нижний регистр для имен файлов.
/N Новый формат длинного списка, имена файлов выводятся в крайнем
правом столбце.
/O Сортировка списка отображаемых файлов.
порядок N По имени (по алфавиту)
сортировки S По размеру (начиная с минимального)
E По расширению (по алфавиту)
D По дате и времени (начиная с самого старого)
G Начать список с каталогов. - Префикс "-" обращает порядок.
/P Пауза после заполнения каждого экрана.
/Q Вывод сведений о владельце файла.
/R Отображение альтернативных потоков данных этого файла.
/S Отображение файлов из указанного каталога и всех его
подкаталогов.
/T Выбор поля времени для сортировки.
время C Создание.
A Последнее использование.
W Последнее изменение.
/W Вывод списка в несколько столбцов.
/X Отображение коротких имен для файлов, чьи имена не соответствуют
стандарту 8.3. Формат аналогичен выводу с ключом /N, но короткие
имена файлов выводятся слева от длинных. Если короткого имени у
файла нет, вместо него выводятся пробелы.
/4 Вывод номера года в четырехзначном формате.
Стандартный набор ключей можно записать в переменную среды DIRCMD. Для отмены
их действия введите в команде те же ключи с префиксом "-", например: /-W.
Так что же это так запрятано-то? Почему в help ls об этом не написано? Обычно в man'е достаточно полная информация о команде, почему же здесь это так запрятано?
Ну и раз уж пришлось набрать больше двух команд в PS, позвольте написать, что мне не понравилось:
1) help ls не дал список всех возможных ключей
2) help ls с ключами -full, -detailed не вывел мне то, что приведено в вашем комментарии
3) его вывод заставил меня нажимать пробел, скроллинг мышью прокручивал окно, но новой информации не появлялось
4) get-help ChildItem -detailed (предложение набрать так было в конце вывода help ls) — вывел простыню из сразу всего текста, а с конца я читать не умею
Ох ты, это, оказывается, различие между help и get-help, но в разделе «почитать» приводится более неудобная команда! Офигеть просто.
5) Ctrl-C, Ctrl-V не работаю — в принципе, ожидаемое поведение, но Ctrl-Ins, Shift-Ins тоже не сработали, а набирать ручками 'get-help ChildItem -detailed" мне как-то вломы. Правая кнопка мыши, кстати, тоже не сработала.
6) Как вы все-таки получили этот вывод?
7) Как все-таки использовать копипаст?
Знаете, когда знакомился с bash'ем, таких проблем не возникало.
Ну и раз уж пришлось набрать больше двух команд в PS, позвольте написать, что мне не понравилось:
1) help ls не дал список всех возможных ключей
2) help ls с ключами -full, -detailed не вывел мне то, что приведено в вашем комментарии
3) его вывод заставил меня нажимать пробел, скроллинг мышью прокручивал окно, но новой информации не появлялось
4) get-help ChildItem -detailed (предложение набрать так было в конце вывода help ls) — вывел простыню из сразу всего текста, а с конца я читать не умею
Ох ты, это, оказывается, различие между help и get-help, но в разделе «почитать» приводится более неудобная команда! Офигеть просто.
5) Ctrl-C, Ctrl-V не работаю — в принципе, ожидаемое поведение, но Ctrl-Ins, Shift-Ins тоже не сработали, а набирать ручками 'get-help ChildItem -detailed" мне как-то вломы. Правая кнопка мыши, кстати, тоже не сработала.
6) Как вы все-таки получили этот вывод?
7) Как все-таки использовать копипаст?
Знаете, когда знакомился с bash'ем, таких проблем не возникало.
И снова странно! То, что я написал я получил по команде dir /?
Хм… У меня странный какой-то PowerShell. Что ls /?, что dir /? ничего не выводят, только перевод строки. А ls /D вообще ошибку выдает. Попробую погуглить, в чем проблема, но, опять-таки, это нормальное поведение для консоли?!
PS C:\Users\USERNAME> help ls
ИМЯ
Get-ChildItem
ОПИСАНИЕ
Извлекает элементы и их потомки из заданных местоположений.
СИНТАКСИС
Get-ChildItem [[-Path] <string[]>] [[-Filter] ] [-Exclude <string[]
>] [-Force] [-Include <string[]>] [-Name] [-Recurse] [-UseTransaction] [<Co
mmonParameters>]
Get-ChildItem [-LiteralPath] <string[]> [[-Filter] ] [-Exclude <str
ing[]>] [-Force] [-Include <string[]>] [-Name] [-Recurse] [-UseTransaction]
[]
ОПИСАНИЕ
Командлет Get-ChildItem получает элементы из заданных местоположений. Если
элемент является контейнером, данный командлет получает из контейнера элеме
нты, которые называются дочерними элементами. Для извлечения элементов из в
сех дочерних контейнеров можно использовать параметр Recurse.
Местоположение может являться расположением в файловой системе, например ка
талогом, либо расположением, предоставляемым другим поставщиком, например к
устом реестра или хранилищем сертификатов.
ССЫЛКИ ПО ТЕМЕ
Online version: go.microsoft.com/fwlink/?LinkID=113308
about_Providers
Get-Item
Get-Alias
Get-Location
Get-Process
ЗАМЕЧАНИЯ
Для просмотра примеров введите: "get-help Get-ChildItem -examples".
Для получения дополнительных сведений введите: "get-help Get-ChildItem -det
ailed".
Для получения технических сведений введите: "get-help Get-ChildItem -full".
ls -?
Да вы гений! Оказывается, ls -n выдаст чуть более удобоваримый вариант. Видимо, ребята из Microsoft не до конца переписали хелп, так как в хелпе ключа -n нет, но он, видимо, остался от cmd.exe. Но время, потраченное на ковыряние хелпа(!), убедило меня в том, что несмотря на неплохую попытку сделать нормальную консоль, PowerShell все еще нуждается в довольно большой доработке.
возможно, тут есть некий одноранговый блаб эффект — вы видите возможности, которые еть в вашем шеле и павершелл, видите возможности, которые есть в вашем шелле и нет в павершелл, но не видите возможностей, которых нет в вашем шелле, нно есть в павершелл.
Возможно, но вот только сейчас я понял, что опции пишутся с большой буквы еще и потому, что эта заглавная буква и есть однобуквенный алиас к опции. ИМХО, эту информацию следовало бы поместить в топике, так как она не очевидна, но в то же время довольно полезна.
К тому же, я и не спорю, что возможностей для написания скриптов у PS больше, но, опять-таки, для работы command line only, он кажется мне менее приспособленным нежели bash, zsh, etc.
К тому же, я и не спорю, что возможностей для написания скриптов у PS больше, но, опять-таки, для работы command line only, он кажется мне менее приспособленным нежели bash, zsh, etc.
Опять погорячился. Это просто возможность сокращать имя опции, если нет неопределенности. Как таковых однобуквенных опция, видимо, нету.
просто от названия опции можно оставлять столько начальных символов, сколько требуется, чтобы отличить от других
мне нравиться в павершелле
— объекноориентированность
— поддержка продуктов MS
— интеграция с .NET
в принципе, это используется и в коммандлайновой работе, но заметнее в автоматизации.
мне нравиться в павершелле
— объекноориентированность
— поддержка продуктов MS
— интеграция с .NET
в принципе, это используется и в коммандлайновой работе, но заметнее в автоматизации.
ls это всего лишь алиас для Get-ChildItem
Посмотрите по нему документацию узнаете об одной из самых интересных возможностей Powershell пришедшей в него из Unix.
Все есть файлы и директории.
— работа с реестром
get-childitem registry::hklm\software
— работа с сертификатами
get-childitem cert:\. -recurse -codesigningcert
Даже SQL server можно представить как файловый провайдер.
Посмотрите по нему документацию узнаете об одной из самых интересных возможностей Powershell пришедшей в него из Unix.
Все есть файлы и директории.
— работа с реестром
get-childitem registry::hklm\software
— работа с сертификатами
get-childitem cert:\. -recurse -codesigningcert
Даже SQL server можно представить как файловый провайдер.
На самом деле, это вы не до конца прочитали маны. Прикол заключается вот в чём:
SYNTAX
Get-ChildItem [[-Path] <string[]>] [[-Filter] ] [-Exclude <string[]>
] [-Force] [-Include <string[]>] [-Name] [-Recurse] [-UseTransaction] [<Comm
onParameters>]
А после этого, вы продолжаете читать маны по шеллу, и выясняете, что со свитч параметрами он ведёт себя очень интересно:
Что
ls -n
что
ls -nam
Это просто удобная фитча ПШ. Он позволяет сокращать свитчевые параметры
еще можно в ise запустить спраку при помощи f1 только она про алисасы не знает
Там же ведь то же, что и help выводит?
ага, только можно смотреть в более удобно виде. Вообще, бесплатные книжки есть
А еще можно и бесплатные русские вебкасты по Powershell смотреть :)
www.techdays.ru/Category.aspx?Tag=PowerShell
www.techdays.ru/Category.aspx?Tag=PowerShell
А еще можно если ностальгия мучает в Powershell делать
man ls
Если хочется примеров использования комманд в Powershell нужно делать вот так:
man ls -detailed
man ls
Если хочется примеров использования комманд в Powershell нужно делать вот так:
man ls -detailed
ctrl+shift+c
Но ведь не сами же вы это придумали, искать пришлось? Почему же когда я знакомился с bash'ем такой проблемы не возникло? Есть ведь стандартные сочетания, нафига было придумывать новое?
Magic блин, у меня это тоже не работает! Хотя семерка лицензионная, по msdn aa, PowerShell, как и полагается, был с ней в комплекте.
ну два раза же копипастил уже с ctrl-shift-c
из командной строки и из ps
Сейчас проверил на 2008 сервере. Тоже не работает. Зато работает очень странный способ копипаста (на домашнем ноуте тоже) — выделяем мышкой, потом щелкаем правой кнопкой — текст вставляется. ИМХО, лучше бы сделали это средней кнопкой, а на правую, как и ожидается повесили контекстное меню.
Я примерно год назад довольно плотно столкнулся с PS-скриптами на одном из проектов, на котором я работал. Кроме некоторого количества уже готовых скриптов (в которых пришлось разбиратся и которые писались почти PS-гурами) пришлось свои писать.
В общем впечатление такое: очень интересно, потенциально мощь (из-за возможностей .NET-а)… НО, блин, почему же так мутно: синтаксис тяжело читать, разные ограничения. То, что на C# занимает 5 стейтментов, на PS разворачивается в полотно символов… Даже Perl-скрипты, написанные бородатыми сисадминами под пиво с чипсами читалось как-то намного понятней.
Выскажу своё имхо, подкрепленное только небольшим опытом использования PS в проекте для автоматизации некоторых операций (сборка, deploy, построение-пересылка-складирование отчетов об операциях и т.д.): Неудобно.
В общем впечатление такое: очень интересно, потенциально мощь (из-за возможностей .NET-а)… НО, блин, почему же так мутно: синтаксис тяжело читать, разные ограничения. То, что на C# занимает 5 стейтментов, на PS разворачивается в полотно символов… Даже Perl-скрипты, написанные бородатыми сисадминами под пиво с чипсами читалось как-то намного понятней.
Выскажу своё имхо, подкрепленное только небольшим опытом использования PS в проекте для автоматизации некоторых операций (сборка, deploy, построение-пересылка-складирование отчетов об операциях и т.д.): Неудобно.
Про Рефлектор на PS — это вы погорячились. Сила рефлектора в декомпиляции кода, а не в отображении членов классов.
я, уж извините, возьму на себя смелость поправить…
М, кстати, а как вам факт джедайской силы в пауэршелле?
Заходите на флешку, на которой сидит эта вирусня, котоаря по флешкам плодиться. Потом набираете
ls
И не видете ничего.
Набираете
ls -force
и видете грёбаный autorun.inf
набираете
del autorun.inf
и получаете факап от системы.
Набираете джедайско-верное
del autorun.inf -force
И… Как лазерным мечём снесло.
Заходите на флешку, на которой сидит эта вирусня, котоаря по флешкам плодиться. Потом набираете
ls
И не видете ничего.
Набираете
ls -force
и видете грёбаный autorun.inf
набираете
del autorun.inf
и получаете факап от системы.
Набираете джедайско-верное
del autorun.inf -force
И… Как лазерным мечём снесло.
Чтобы показать как может выглядеть программа на PowerShell (правда, первой версии, вторую я не знаю): bolknote.ru/files/optkit.ps1
Все это замечательно, но одна маленькая деталь портит все удовольствие — запуск внешних программ с параметрами, особенно если параметры содержат кавычки, скобки и т.д. превращается в забавные танцы.
Почему наблюдательные парни из Майкрософта не озаботились удобным запуском внешнего софта?
Где способ задать программулину и перечислить параметры, не озабачиваясь хитрым экранированием символов и поиском где PS надумал интерпретировать параметры по своему?
MS говорит, мол, вот вам новые и крутые возможности, которых не было в bat/cmd. Замечательно! Однако то, что делалось просто в cmd теперь дико неудобно в PS.
Почему наблюдательные парни из Майкрософта не озаботились удобным запуском внешнего софта?
Где способ задать программулину и перечислить параметры, не озабачиваясь хитрым экранированием символов и поиском где PS надумал интерпретировать параметры по своему?
MS говорит, мол, вот вам новые и крутые возможности, которых не было в bat/cmd. Замечательно! Однако то, что делалось просто в cmd теперь дико неудобно в PS.
А дайте пример, а то я проблем особых не заметил.
Запуск команд PS с параметрами из-под NSIS — даже еще веселее. Лес \\\ и чурчхела кавычек…
....«чурчхела кавычек»
Удивительный по выразительности образ :)
Удивительный по выразительности образ :)
запустить ssh, в кавычках указать запустить греп у которого в кавычках написать регексп с кавычками… и т.д. приходилось такое писать и еще специальную функцию, которая каждый раз эскейпила кавычки… вот это было весело отлаживать, до сих пор мурашки по коже.
Год назад поставил cygwin-bash и unix-toolset на винду, и зажил, как белый человек. Без необходимости учить убогий cmd и powershell.
Простите полюбопытствую, а они с реестром и WMI-объектами так же шустро и нативно работают?
С реестром и WMI у меня нужды работать не было.
Ставил из-за того, что основная система — линукс, а рендер-нод на отдельном компьютере на венде ХР. На нем нужно было кое-что автоматизировать скриптом.
Само собой, чтобы не извращаться с cmd я поставил виндос — версию баша, чтобы банально иметь возможность запускать скрипты на привычном языке.
Насчет субъективной работы — тормозит шелл ужасно (банальный ls может занимать секунд 10), но с задачей справляется.
Ставил из-за того, что основная система — линукс, а рендер-нод на отдельном компьютере на венде ХР. На нем нужно было кое-что автоматизировать скриптом.
Само собой, чтобы не извращаться с cmd я поставил виндос — версию баша, чтобы банально иметь возможность запускать скрипты на привычном языке.
Насчет субъективной работы — тормозит шелл ужасно (банальный ls может занимать секунд 10), но с задачей справляется.
Мммм! Плюсы всем! Моя лучшая статья на хабре. Спасибо всем, кто голосовал, спасибо всем, кто выпендривался.
Всем тролям, так уж и быть, уговорили, сделаю по минусу, у меня сегодня отличное настроение.
Конструктивные предложения, истории успеха и рассказы о том, что вам понравилось — это всегда велкам, очень жду и буду рад почитать.
Пишите, выражайте своё мнение, это то, что мне нужно!
Всем тролям, так уж и быть, уговорили, сделаю по минусу, у меня сегодня отличное настроение.
Конструктивные предложения, истории успеха и рассказы о том, что вам понравилось — это всегда велкам, очень жду и буду рад почитать.
Пишите, выражайте своё мнение, это то, что мне нужно!
Рад, что и у Windows есть хорошая консоль. А то cmd после всяких bash'ей создает ужасное впечатление.
Спасибо за статью, про PS раньше слышал, но так, краем уха. Надо будет теперь поплотнее заняться.
Спасибо за статью, про PS раньше слышал, но так, краем уха. Надо будет теперь поплотнее заняться.
еще надо бы ссылок надавать — на бесплатные книжки, poshcode.org/ WPK и т.д.
Бесплатные русские книги по Powershell
blogs.technet.com/b/abeshkov/archive/2009/04/04/3221824.aspx
blogs.technet.com/b/abeshkov/archive/2008/12/31/3172943.aspx
blogs.technet.com/b/abeshkov/archive/2009/04/04/3221824.aspx
blogs.technet.com/b/abeshkov/archive/2008/12/31/3172943.aspx
Майкрософт действительно разработали что-то новое и интересное.
О, да. Действительно новое. )
О, да. Действительно новое. )
Они действительно понаблюдали за пользователями других командных интерпретаторов и выяснили, какая команда чаще всего используется в интерпретаторах.
Холмс, но где же sudo?

А чем не подходит runas?
командлеты через runas.exe не работают.
зы. упс, пикча съехала

зы. упс, пикча съехала

А если пользовать psexec и указывать какие командлеты подгружать через snap-in или профиль?
msdn.microsoft.com/en-us/library/ms714450(v=vs.85).aspx
msdn.microsoft.com/en-us/library/ms714450(v=vs.85).aspx
На самом деле — это был звиздёж и шелокация. Я нагло наврал. Я вообще не знаю никаких исследований на эту тему. Но звучит просто, неплохо.
а мне кажется — ужасно и так типично по-майкрософтовски. )
по вкусу напоминает 1С.Бухгалтерию)))
по вкусу напоминает 1С.Бухгалтерию)))
какая бухгалтерия лучше?
О! Безусловно это лидер рынка) и, кстати, программирование под 1С — очень неплохо оплачивается даже в провинции, и работа по этому профилю всегда есть.
Только вот, пару раз попробовав — я зарёкся. И большинство моих знакомых программистов тоже.
Только вот, пару раз попробовав — я зарёкся. И большинство моих знакомых программистов тоже.
А ведь главные разработчкии Powershell пришли к нам из IBM. Потребовалось несколько лет для донесения идеи едининого скриптового языка всем в компании.
Понятно что все типично по майкрософтовски потому что IBM. :)
Понятно что все типично по майкрософтовски потому что IBM. :)
Какая вообще разница откуда они к ВАМ пришли?
Видно надо в посты включать тег юмора.
Зачем? Иронию-то я как раз заметил. Но, на мой взгляд, для нее нет оснований.
Кем бы ни были ведущие программисты этого проекта, они создали нечто полностью в духе этой системы. Нечто местами алогичное, местами произвольное, что можно только выучить, но не понять.
Например,
Ребята, «New» — это не глагол и не действие!
Чувствуется, что все эти коммандлеты (!!?? wtf) долго росли как ком грязи, а не были нормально спроектированы.
Кем бы ни были ведущие программисты этого проекта, они создали нечто полностью в духе этой системы. Нечто местами алогичное, местами произвольное, что можно только выучить, но не понять.
Например,
Первое. Командлеты в оригинальной нотации PS имеют следующую систему именования — Глагол-Объект. Это позволяет вам лучше понимать, что можно ожидать в результате выполнения того или иного командлета. Например,
Get-Process # Получить список процессов
Remove-Item # Удалить что-то
Get-Help # получить справку по чему-то
Set-Alias # Создать новый алиас
New-Item # Создать новый объект (Объектом может быть всё что угодно, например, файл)
Ребята, «New» — это не глагол и не действие!
Чувствуется, что все эти коммандлеты (!!?? wtf) долго росли как ком грязи, а не были нормально спроектированы.
Почитал с удовольствием. Спасибо огромное. PoSh — очень интересный инструмент, а подобный материал очень редко встречаю.
Еще раз спасибо!
Еще раз спасибо!
Спасибо. Интерес появился.
Новая должность и вот уже неделя на Win7 — чувствую себя крайне не комфортно, но в корпоративной среде никак без M$.
Буду автоматизировать задачи на PowerShell
Новая должность и вот уже неделя на Win7 — чувствую себя крайне не комфортно, но в корпоративной среде никак без M$.
Буду автоматизировать задачи на PowerShell
Пару минут поглядел на что-то-делающие скрипты и теперь задаюсь вопросом…
А чем же это лучше, чем JS/VBS + WMI ????
Только тем, что менее читабельно? :)
А чем же это лучше, чем JS/VBS + WMI ????
Только тем, что менее читабельно? :)
VBS имеет синтаксис менее преднзначенный для работы с файлами и их запуска.
Объектная модель WSH менее удобна для файловыз операций
Нет интеграции с .NET
Нет поддержки в SQL Server и прочее
Например, попробуйте написать на VBS
ls -r | sort FileSize -desc | select -first 20 | %{ myUtility $_.FullName }
для 20 самых больших файлов из текущего каталога и подкаталогов запутить утилиту командной строки myUtility
Объектная модель WSH менее удобна для файловыз операций
Нет интеграции с .NET
Нет поддержки в SQL Server и прочее
Например, попробуйте написать на VBS
ls -r | sort FileSize -desc | select -first 20 | %{ myUtility $_.FullName }
для 20 самых больших файлов из текущего каталога и подкаталогов запутить утилиту командной строки myUtility
Если вы правда не можете понять чем, то вам не стоит программировать. Простите.
Подскажите, пож-та, можно ли встроенными в винду средствами (а может быть, этим самым павершеллом) сделать так, чтобы при подключении моей мобилки к усб и определению её как внешнего накопителя, происходило автоматическое копирование его содержимого в указанную папку на моем ноуте? Если да, то как :)
Спасибо за статью!
Есть ли штатный способ хранить глобальную историю команд?
Есть ли штатный способ хранить глобальную историю команд?
Снимок экрана, из которого можно почерпнуть пару трюков: goo.gl/bDJBm (via @msuiche)
Отличная статья, спасибо Nurked!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Первые шаги для пауэршельшиков