Pull to refresh

Comments 171

Появился интерес к Powershell после прочтения статьи.
На самом деле, я больше всего старался добиться именно этого эффекта.
Расскажите мне пожалуйста, чем вызвано такое поведение. Я для себя так и не смог это объяснить :-)
Есть скрипт на повершеле(назовем его 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? Вы с такой скоростью читаете техническую литературу?
В любом случае можно обойтись без оскорблений.
За четыре минуты, пусть даже три вполне реально прочитать данный текст.

Нашли к чему придраться. Совсем у народа крыша едет сегодня.
Я его писал пять часов.

Помните Футураму?

— Фрай, у меня кончился сценарий? Что делать? Только 20 минут из 2х часов.

— Ну, я его писал 2 часа, думал, что и читаться он будет так же
Автор забыл упомянуть что одним из главных козырей Powershell это полная интеграция со всеми новыми продуктами от Microsoft начиная с 2007 года. Ни один продукт не выходит без интерфейса к Powershell.

Даже такие конкуренты Microsoft как VMWare и IBM взяли Powershell на воружение и управляют своими продуктами с помощью него.

Написал. Смотрите в конце
Там уже пофиксили пробел/enter в more? Последний раз, когда я его (PS) видел, он у меня вызвал отвращение, сравненимое с cmd.
Хм. Вообще-то more — это как раз приблуда, которая осталась со времён CMD. И даже раньше. Сейчас тут есть Get-Content.
То есть вместо dmesg|less я должен писать Get-Eventlog «System» | fl | Get-Content?

Обожаю клавиатурные упражнения
Alias gc Get-Content
Это стандартная приблуда, вшита в павершелл. Короче, чем мор.
Я не поленился, залогинился на последний exchange в моём legacy хозяйстве.

[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
Мне жизнь вполне мила, я расстаюсь с майкрософтом со скоростью примерно 10% в год. Исходя из общего прогресса я закончу с ним возиться примерно через 2 года, таким образом я решу все проблемы в майкрософтовских продуктах, и мне больше не придётся ругаться при виде очередного уродливого more имени MS.
У меня gc в Powershell под Windows 7 и Windows Server 2008 R2 стандартно превращается в Get-Content.

> (О, кстати, я вам не сказал, но в PS, на мой взгляд, лучше всего смотрится текстовый редактор vim. Возможно кто-то назовёт меня настоящим извращенцем, но на самом деле, я уже не раз пытался использовать что-то другое, но всегда возвращался к виму. Попробуйте и вы. Его не просто изучить с нуля, но если вы поймёте основы, то сможете очень быстро и удобно редактировать тексты.)

Читать как:
(О, кстати, я вам не сказал, но в PS, на мой взгляд, лучше всего смотрится интерпретатор bash. Возможно, кто-то назовет меня настоящим извращенцем, но на самом деле, я уже не раз пытался использовать что-то другое, но всегда возвращаюсь к башу. Попробуйте и вы. Его не так просто изучить с нуля, но если вы поймёте основы, то сможете очень быстро и удобно… делать что угодно.)

Извините, не удержался :-)

Вы еще забыли упомянуть основную вкусность PS — фактическая работа с .Net, а значит, можно прямо вызывать любой объект .net и использовать его в скрипте. Это — невероятно удобно.
Хм. я как бы .NET даже отдельный раздел в конце посвятил. Просто не хватило у меня сил писать целую книгу про шелл за раз 8-)))
А вы точно статью читали? как это не упомянул?
CD (= Set-Location) не даёт списка файлов. Даёт LS и DIR
Бывает. Я по привычке ls предпочитаю
Там можно настроить юникод? Я как-то пробовал пускать скрипт, печатающий в UTF-8, но даже chcp не давал желаемого эффекта, вместо букв выводились кракозябры.
Хм. А где конкретно проблема? Я просто как раз на повершелле писал скриптец, который позволял тексты перегонять по всем кодировкам.
Можно, у некоторых команд есть параметр Encoding.
ненайдя топиков на хабре за столь внушительное время (мб плохо искал) наконец, кто то заикнулся о PS… рисковано относительно сидалища и гиены огненной…
PS-его имя нельзя произносить вслух, а то он услышит и покарает…
сделаю тупое предположение/отступление невдаваясь в подробности… насколько я слышал в Seven и 2008 запихали толи эмулятор unix толи само ядро…
ЗЫ: слышал звон, незнаю где он… хоть убейте)
спасибо, интерес так сказать возбудился… или пробудился…

фига я обложался, целая ветка есть )))

Добро пожаловать.

Я - страшный дух будущего.

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

Это хороший ход MS. Администрирование с помощью командной строки во многих случаях намного проще. Может еще и файлы Power-config сделают (т.е. полная настройка системы файлами конфигурации)?
Легче написать оболочку к unix ядру тогда (:
Да, большое спасибо MS за PS. Теперь у вендотроллей, считающих отсутствие командной строки преимуществом ОС, будет на один аргумент меньше.
И у линупс-троллей, считающих, что в Windows нет командной строки ;)
Ну, этот аргумент был более объективным. Тем больше заслуга авторов PoSH в его устранении.

(за неимением кармы спрошу здесь)

> Что же, мой неинтересующийся друг, надеюсь, я дал тебе что-то интересное, и ты теперь возьмёшься за покорение интерпретатора, который действительно поможет тебе упростить твою нелёгкую программерскую жизнь и даст тебе возможность автоматизировать больше и быстрее.

По google://power shell for linux только форумы msdn со сравнениями PoSH и bash и толстыми трололо. Подскажите, пожалуйста, что-нибудь стоящее… кроме установки пиратки в виртуальную машину. :D

(и ещё раз будь проклят тот человек, который посчитал меня недостойным больше чем одного коммента в час)
Спасибо но это же всё-равно только потыкать. Хотелось бы в повседневной жизни попробовать PoSH вместо bash. Переносить повседневную жизнь на другу ОС сейчас нет времени, может позже.
Вы недооцениваете вендотроллей. У них стало минимум на 2 аргумента больше:
-вот не было нормальной коммандной строки, а теперь есть!
-а у нас коммандная строка объектная, а не просто текстово-конвеерная.
Вендотроллей нет в природе. Вас кто то ввел в заблуждение.
Есть такие тематики, по которым нету троллей?
> -а у нас коммандная строка объектная, а не просто текстово-конвеерная.

IPython + ipipe = объектный шелл на *nix
покажите мне, как работает PS по ssh. RDP не предлагать.
Ставишь cygwin (и sshd) — и вперед.
Хотя если ты поставишь cygwin, то очень большая вероятность, что вместо PS будешь использовать bash ;)
Для «предпочитателей» FAR'а есть плагин PowerShellFar.
С консолью, отладкой и прочими вкусностями.

Брать тут: code.google.com/p/farnet/
Извиняюсь за оффтоп, но через PS можно проверить состояние сетевого соединения? (не пингом ресурса)
Кажется нагуглил сам — Get-NetworkAdapter с нужным параметром.
Вторую неделю как пререшёл на PowerShell (совместно с Console 2), в основном из-за полной поддержки UTF-8, радуюсь, но вот вчера заметил, что запятая "," в параметрах строки (в частности при вызове python скриптов) интерпретируется как сепаратор аргументов, что очень расстроило, не знаете как можно обойти/вылечить?
Различные кавычки пробовали? Можно конкретный пример?
Кавычки-то помогают, а вот без кавычек…
Раньше в cmd.exe при вызове > python script.py a,b,c
«a,b,c» было одним аргументом, а сейчас тоже самое уже ['a', 'b', 'c'] — три разных аргумента.
Лень лезть в доку, но попробуйте & python script.py a,b,c
a`,b`c или «a,b,c» пробовали?
Это, конечно, будет работать, но это не подходит для уже существующих, а тем более для кросс-платформенных связок/вызовов из функций/модулей, которые отлично работали в cmd.exe, но перестали работать в powershell, из-за того, что изменилась концепция интерпретации символа «запятая» в строке аргументов. Выходом была бы или настройка, отменяющая использование запятой в качестве сепаратора, либо собственный «препроцессор» обработки командной строки, но я пока не нашёл, как это реализовать.
UFO just landed and posted this here
You mad cause it's not Gne\Loonex?
Что же вы про Windows PowerShell Integrated Scripting Environment (ISE) забыли? Чтобы запустить ее напишите ISE в поисковой строке меню «Пуск».
Эт не кавайно. Эт не по-джедайски. В ИСЕ столько рюшечек понавинтили, что тормозов больше чем надо стало. ИМХО
UFO just landed and posted this here
На глаз она не тормозит, а по удобству с не менявшимся со времен как минимум 2000 винды консольным окном сравнений не может быть никаких.

Потому что ISE умеет:
1. Человеческие копирование/вставку
2. Встроенное редактирование скриптов (не однострочных, а нормальных таких больших скриптов)
3. Табы. Человеческие табы!!! В винде! Из коробки!!!
4. Отладку

Консольное окно это тот случай, когда его использование — не олдскул, а просо олд.
Консольное окно — это когда по ssh на винду заходишь
Мне одному вывод виндового dir по сравнению с линуксовым ls кажется убожеством? Или это дело привычки?
Хорошо, скажите как мне посмотреть содержимое текущий директории без дополнительной информации о файлах, только имена. И чтобы выводилось не по одному имени на строку, а на всю ширину окошка. Серьезно, неужели ls -l вам нужен чаще, чем просто ls? Ну и еще хотелось бы цветную выдачу.

И да, я ничего не имею против 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'ем, таких проблем не возникало.
И снова странно! То, что я написал я получил по команде 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".
Где здесь описание, например, ключа '/D' из вашего комментария? И да, это как раз то, что я таки смог увидеть.
Ключ /d таки в командной строке. Тут я ошибся окном.
Ну тогда совсем интересно. Ко всем тем вещам, что я написал ранее, добавляется еще и то, что я до сих пор не вижу в хелпе, как настроить вывод этой команды.

PS Ctrl-Shift-C еще раз проверьте, пожалуйста.
Да вы гений! Оказывается, ls -n выдаст чуть более удобоваримый вариант. Видимо, ребята из Microsoft не до конца переписали хелп, так как в хелпе ключа -n нет, но он, видимо, остался от cmd.exe. Но время, потраченное на ковыряние хелпа(!), убедило меня в том, что несмотря на неплохую попытку сделать нормальную консоль, PowerShell все еще нуждается в довольно большой доработке.
возможно, тут есть некий одноранговый блаб эффект — вы видите возможности, которые еть в вашем шеле и павершелл, видите возможности, которые есть в вашем шелле и нет в павершелл, но не видите возможностей, которых нет в вашем шелле, нно есть в павершелл.
Возможно, но вот только сейчас я понял, что опции пишутся с большой буквы еще и потому, что эта заглавная буква и есть однобуквенный алиас к опции. ИМХО, эту информацию следовало бы поместить в топике, так как она не очевидна, но в то же время довольно полезна.

К тому же, я и не спорю, что возможностей для написания скриптов у PS больше, но, опять-таки, для работы command line only, он кажется мне менее приспособленным нежели bash, zsh, etc.
Опять погорячился. Это просто возможность сокращать имя опции, если нет неопределенности. Как таковых однобуквенных опция, видимо, нету.
просто от названия опции можно оставлять столько начальных символов, сколько требуется, чтобы отличить от других

мне нравиться в павершелле
— объекноориентированность

— поддержка продуктов MS

— интеграция с .NET

в принципе, это используется и в коммандлайновой работе, но заметнее в автоматизации.
ls это всего лишь алиас для Get-ChildItem

Посмотрите по нему документацию узнаете об одной из самых интересных возможностей Powershell пришедшей в него из Unix.

Все есть файлы и директории.

— работа с реестром
get-childitem registry::hklm\software
— работа с сертификатами
get-childitem cert:\. -recurse -codesigningcert

Даже SQL server можно представить как файловый провайдер.
Да я прочитал статью, но все равно спасибо :)
И да, неужели help ls будет отличаться от help Get-ChildItem?
На самом деле, это вы не до конца прочитали маны. Прикол заключается вот в чём:
SYNTAX
Get-ChildItem [[-Path] <string[]>] [[-Filter] ] [-Exclude <string[]>
] [-Force] [-Include <string[]>] [-Name] [-Recurse] [-UseTransaction] [<Comm
onParameters>]


А после этого, вы продолжаете читать маны по шеллу, и выясняете, что со свитч параметрами он ведёт себя очень интересно:
Что
ls -n
что
ls -nam

Это просто удобная фитча ПШ. Он позволяет сокращать свитчевые параметры
А вы не до конца прочитали ветку комментариев :)
И да, это может быть в манах по шеллу, но не в манах по ls, а я все-таки хотел лишь потрогать, а не выучить все и вся.
еще можно в ise запустить спраку при помощи f1 только она про алисасы не знает
Там же ведь то же, что и help выводит?
ага, только можно смотреть в более удобно виде. Вообще, бесплатные книжки есть
А еще можно если ностальгия мучает в Powershell делать

man ls

Если хочется примеров использования комманд в Powershell нужно делать вот так:

man ls -detailed
-examples не лучше будет?
Но ведь не сами же вы это придумали, искать пришлось? Почему же когда я знакомился с bash'ем такой проблемы не возникло? Есть ведь стандартные сочетания, нафига было придумывать новое?
ох лол! этим командам десятки лет!
Согласен, подзабыл. Но тем не менее, Ctrl-C, Ctrl-Ins более известны, нежели Ctrl-Shift-C.
Magic блин, у меня это тоже не работает! Хотя семерка лицензионная, по msdn aa, PowerShell, как и полагается, был с ней в комплекте.
ну два раза же копипастил уже с ctrl-shift-c
из командной строки и из ps
Можно $host.version, пожалуйста?
Сейчас проверил на 2008 сервере. Тоже не работает. Зато работает очень странный способ копипаста (на домашнем ноуте тоже) — выделяем мышкой, потом щелкаем правой кнопкой — текст вставляется. ИМХО, лучше бы сделали это средней кнопкой, а на правую, как и ожидается повесили контекстное меню.
Я примерно год назад довольно плотно столкнулся с PS-скриптами на одном из проектов, на котором я работал. Кроме некоторого количества уже готовых скриптов (в которых пришлось разбиратся и которые писались почти PS-гурами) пришлось свои писать.

В общем впечатление такое: очень интересно, потенциально мощь (из-за возможностей .NET-а)… НО, блин, почему же так мутно: синтаксис тяжело читать, разные ограничения. То, что на C# занимает 5 стейтментов, на PS разворачивается в полотно символов… Даже Perl-скрипты, написанные бородатыми сисадминами под пиво с чипсами читалось как-то намного понятней.

Выскажу своё имхо, подкрепленное только небольшим опытом использования PS в проекте для автоматизации некоторых операций (сборка, deploy, построение-пересылка-складирование отчетов об операциях и т.д.): Неудобно.
Про Рефлектор на PS — это вы погорячились. Сила рефлектора в декомпиляции кода, а не в отображении членов классов.
ну так, никто не запрещает 8-)
я, уж извините, возьму на себя смелость поправить…
блин.
«Если же вы захотели получить справку по какой-то функции, но не знаете, как она называется, а просто предполагаете о её существовании, то просто наберите»

правильнее «предполагаете её существование»
Комментарии такого типа лучше направлять автору статьи в ЛС.
М, кстати, а как вам факт джедайской силы в пауэршелле?

Заходите на флешку, на которой сидит эта вирусня, котоаря по флешкам плодиться. Потом набираете
ls
И не видете ничего.
Набираете
ls -force
и видете грёбаный autorun.inf

набираете
del autorun.inf
и получаете факап от системы.
Набираете джедайско-верное
del autorun.inf -force
И… Как лазерным мечём снесло.
attrib -r -h -s *
del autorun.inf
;)

опять же, это просто не по-джедайски. Хотя, работает 8-)
Чтобы показать как может выглядеть программа на PowerShell (правда, первой версии, вторую я не знаю): bolknote.ru/files/optkit.ps1
Все это замечательно, но одна маленькая деталь портит все удовольствие — запуск внешних программ с параметрами, особенно если параметры содержат кавычки, скобки и т.д. превращается в забавные танцы.
Почему наблюдательные парни из Майкрософта не озаботились удобным запуском внешнего софта?
Где способ задать программулину и перечислить параметры, не озабачиваясь хитрым экранированием символов и поиском где PS надумал интерпретировать параметры по своему?
MS говорит, мол, вот вам новые и крутые возможности, которых не было в bat/cmd. Замечательно! Однако то, что делалось просто в cmd теперь дико неудобно в PS.
А дайте пример, а то я проблем особых не заметил.
Запуск команд PS с параметрами из-под NSIS — даже еще веселее. Лес \\\ и чурчхела кавычек…
....«чурчхела кавычек»

Удивительный по выразительности образ :)
запустить ssh, в кавычках указать запустить греп у которого в кавычках написать регексп с кавычками… и т.д. приходилось такое писать и еще специальную функцию, которая каждый раз эскейпила кавычки… вот это было весело отлаживать, до сих пор мурашки по коже.
почему нельзя использовать select-string вместо grep?
Год назад поставил cygwin-bash и unix-toolset на винду, и зажил, как белый человек. Без необходимости учить убогий cmd и powershell.
Простите полюбопытствую, а они с реестром и WMI-объектами так же шустро и нативно работают?
С реестром и WMI у меня нужды работать не было.

Ставил из-за того, что основная система — линукс, а рендер-нод на отдельном компьютере на венде ХР. На нем нужно было кое-что автоматизировать скриптом.
Само собой, чтобы не извращаться с cmd я поставил виндос — версию баша, чтобы банально иметь возможность запускать скрипты на привычном языке.

Насчет субъективной работы — тормозит шелл ужасно (банальный ls может занимать секунд 10), но с задачей справляется.
Мммм! Плюсы всем! Моя лучшая статья на хабре. Спасибо всем, кто голосовал, спасибо всем, кто выпендривался.

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

Конструктивные предложения, истории успеха и рассказы о том, что вам понравилось — это всегда велкам, очень жду и буду рад почитать.

Пишите, выражайте своё мнение, это то, что мне нужно!
UFO just landed and posted this here
UFO just landed and posted this here
Рад, что и у Windows есть хорошая консоль. А то cmd после всяких bash'ей создает ужасное впечатление.
Спасибо за статью, про PS раньше слышал, но так, краем уха. Надо будет теперь поплотнее заняться.
Майкрософт действительно разработали что-то новое и интересное.
О, да. Действительно новое. )
Да. Действительно новое. Это правда, не сомневайтесь.
А в чем собственно новизна? )
Они действительно понаблюдали за пользователями других командных интерпретаторов и выяснили, какая команда чаще всего используется в интерпретаторах.


Холмс, но где же sudo?

image
командлеты через runas.exe не работают.
зы. упс, пикча съехала
image
На самом деле — это был звиздёж и шелокация. Я нагло наврал. Я вообще не знаю никаких исследований на эту тему. Но звучит просто, неплохо.
а мне кажется — ужасно и так типично по-майкрософтовски. )
по вкусу напоминает 1С.Бухгалтерию)))
какая бухгалтерия лучше?
О! Безусловно это лидер рынка) и, кстати, программирование под 1С — очень неплохо оплачивается даже в провинции, и работа по этому профилю всегда есть.

Только вот, пару раз попробовав — я зарёкся. И большинство моих знакомых программистов тоже.
Я думаю, учетные задачи одинэсник на одинесе решит быстрее вас на чем-то-там-еще. PoSh это тоже не язык программирования а шелл
А ведь главные разработчкии Powershell пришли к нам из IBM. Потребовалось несколько лет для донесения идеи едининого скриптового языка всем в компании.

Понятно что все типично по майкрософтовски потому что IBM. :)
Какая вообще разница откуда они к ВАМ пришли?
Видно надо в посты включать тег юмора.
Зачем? Иронию-то я как раз заметил. Но, на мой взгляд, для нее нет оснований.
Кем бы ни были ведущие программисты этого проекта, они создали нечто полностью в духе этой системы. Нечто местами алогичное, местами произвольное, что можно только выучить, но не понять.

Например,
Первое. Командлеты в оригинальной нотации PS имеют следующую систему именования — Глагол-Объект. Это позволяет вам лучше понимать, что можно ожидать в результате выполнения того или иного командлета. Например,

Get-Process # Получить список процессов
Remove-Item # Удалить что-то
Get-Help # получить справку по чему-то
Set-Alias # Создать новый алиас
New-Item # Создать новый объект (Объектом может быть всё что угодно, например, файл)


Ребята, «New» — это не глагол и не действие!
Чувствуется, что все эти коммандлеты (!!?? wtf) долго росли как ком грязи, а не были нормально спроектированы.
Почитал с удовольствием. Спасибо огромное. PoSh — очень интересный инструмент, а подобный материал очень редко встречаю.
Еще раз спасибо!
Спасибо. Интерес появился.
Новая должность и вот уже неделя на Win7 — чувствую себя крайне не комфортно, но в корпоративной среде никак без M$.
Буду автоматизировать задачи на PowerShell
Пару минут поглядел на что-то-делающие скрипты и теперь задаюсь вопросом…
А чем же это лучше, чем JS/VBS + WMI ????
Только тем, что менее читабельно? :)
VBS имеет синтаксис менее преднзначенный для работы с файлами и их запуска.

Объектная модель WSH менее удобна для файловыз операций

Нет интеграции с .NET

Нет поддержки в SQL Server и прочее

Например, попробуйте написать на VBS

ls -r | sort FileSize -desc | select -first 20 | %{ myUtility $_.FullName }

для 20 самых больших файлов из текущего каталога и подкаталогов запутить утилиту командной строки myUtility
Если вы правда не можете понять чем, то вам не стоит программировать. Простите.
ну чем лучше vbs я понял.
чем лучше WMI — нет
чем лучше bash+binutils тоже слабо помнимаю
простите, но программировать… и скриптовать несколько разные вещи, или я ошибаюсь?
P.S. при том что и то и другое можно делать на vbs/js/bash/cmd/python/php/ruby/perl etc…

Подскажите, пож-та, можно ли встроенными в винду средствами (а может быть, этим самым павершеллом) сделать так, чтобы при подключении моей мобилки к усб и определению её как внешнего накопителя, происходило автоматическое копирование его содержимого в указанную папку на моем ноуте? Если да, то как :)
Спасибо за статью!

Есть ли штатный способ хранить глобальную историю команд?
Sign up to leave a comment.

Articles

Change theme settings