Comments 18
Интересно я повершелом не пользовался очень давно, они уже консольку сделали нормальную, ну например как терминал на линуксе, или есть альтернативы?
А вы им вообще пользовались? Что именно в нем ненормального?
Перевожу на русский — нет, «эмулятор терминала» от CMD так и остался.
С консолькой всех плохо. Как вариант есть ISE, но это уже будет почти IDE. С другой стороны его можно использовать как интерпретатор с IntelliSense.
Вообще, Powershell — это скриптовый рантайм, который может хостится в любом приложении. Консоль — только один из варинтов среди кучи редакторов от простенького Powersheel ISE до PowerGUI/PowerShellPlus/PrimalScript, Powershell web access, интеграция в Visual Studio и т.п. Интегрировать его в свое приложение — вопрос пары строк.
PowerShell — достаточно полезный инструмент, на самом деле. В статье, на мой взгляд, нужно было обратиться к более привычным сценариям использования. К примеру, посчитать количество строк во всех *.cs файлах в поддиректориях проекта:
(dir -filter "*.cs" -rec | get-content).length
Или работа с математическими выражениями, когда нужно что-то быстро посчитать: $a = [math]::sin(3*[math]::Pi/2)+10; 100/$a
.>Получение информации о процессах, запущенных на удаленном компьютере:
Данная команда:
Вот только при выполнении команд на удаленных хостах (Invoke-Command, Enter-PSsession) возникают проблемы с кодировкой кириллицы.
И да, на удаленном машине должен быть включен WinRM.
По Powershell есть отличная справка в ISE. Тем не менее спасибо за статью.
Данная команда:
Invoke-Command -Computername computername -Credentials hostname\username -ScriptBlock {Get-Process calc.exe | Stop-Process}
на порядок выгодней так как есть возможность повышения полномочий. К сожалению в вашем примере это не реализовано, хотя на мой взгляд это очень важно.Вот только при выполнении команд на удаленных хостах (Invoke-Command, Enter-PSsession) возникают проблемы с кодировкой кириллицы.
И да, на удаленном машине должен быть включен WinRM.
По Powershell есть отличная справка в ISE. Тем не менее спасибо за статью.
В PowerShell совсем ничего не понимаю, но неужели чтобы вывести содержимое файла действительно нужно написать Get-Content — именно два слова, через дефис и с больших букв?
На фоне линуксового cat это кажется немного дико.
На фоне линуксового cat это кажется немного дико.
Как то так ;)
> function cat { Get-Content $args }
> cat C:\scripts\Computers.txt
> function cat { Get-Content $args }
> cat C:\scripts\Computers.txt
Есть множество alias'ов, в том числе линуксовых (ls, pwd, mv, man, cat, ...).
Полный список в длинноокне

В повершелле по умолчанию есть алиас gc для get-content. Так что он еще короче, чем cat. А как звучат в линуксе аналоги для set-content, add-content, clear-content? «help *-content»? Есть ли в этих наименованиях система? В повершелле все просто — есть «nouns» (в данном случае — Content), есть «verbs» («Get»), как различные виды операций с объектом. Есть система именования скриптлетов, которые образуются как Verb-Noun. Есть гайдлайны, какие verbs и для каких целей использовать. Чтобы жить было удобней — есть алиасы (тот же «cat» для get-content). А какая система в линуксе?
> А как звучат в линуксе аналоги для
Если я правильно понял то, что они все делают, то наверное как-то так:
> set-content,
echo «TEST TEST» > file.txt
> add-content,
echo «TEST TEST» >> file.txt
> clear-content?
echo "" > file.txt
Если я правильно понял то, что они все делают, то наверное как-то так:
> set-content,
echo «TEST TEST» > file.txt
> add-content,
echo «TEST TEST» >> file.txt
> clear-content?
echo "" > file.txt
Я понимаю, про что вы говорите. Но для работы этой системы verb-noun все равно нужно знать наизусть оба этих слова, т.е. запоминать (и набирать на клавиатуре!) более длинную команду, если не пользоваться упомянутыми выше алиасами.
Вообще, у меня давно складывается впечатление, что Microsoft по какой-то странной причине предпочитает более наглядные, описательные названия, зачастую неоправданно. Стоит только вспомнить появление папки «Program Files» в Windows 95. Зачем было использовать такое длинное, неудобное в наборе название, которое, к тому же, было несовместимо с тогда еще распространенным DOS'ом? Разве только чтобы всем наглядно продемонстрировать, что новая ОС поддерживает имена папок длиной более 8 символов да еще и с пробелами.
Такая описательность в названиях функций и папок, конечно, наглядна: из названия Get-Content ясно гораздо больше, чем из названия cat, а Program Files звучит более понятно, чем /usr/bin. Но для повседневной работы такое, по-моему, совершенно неоправданно, особенно при наборе всего этого вручную в консоли.
Вообще, у меня давно складывается впечатление, что Microsoft по какой-то странной причине предпочитает более наглядные, описательные названия, зачастую неоправданно. Стоит только вспомнить появление папки «Program Files» в Windows 95. Зачем было использовать такое длинное, неудобное в наборе название, которое, к тому же, было несовместимо с тогда еще распространенным DOS'ом? Разве только чтобы всем наглядно продемонстрировать, что новая ОС поддерживает имена папок длиной более 8 символов да еще и с пробелами.
Такая описательность в названиях функций и папок, конечно, наглядна: из названия Get-Content ясно гораздо больше, чем из названия cat, а Program Files звучит более понятно, чем /usr/bin. Но для повседневной работы такое, по-моему, совершенно неоправданно, особенно при наборе всего этого вручную в консоли.
Самый лучший оператор powershell это конвейер |. Если бы не он, то повершелл был бы всего лишь очередным командным недоязыком. А список сервисов-процессов, кому он, в сущности, нужен?
Из всех написанных Вами cmdletов я соглашаюсь только с Get-Help. К нему я полагаю что надо добавить Get-Member,Get-command, Get-Type. Это 4 (вместе с Get-Help) cmdletа с которых КАЖДОМУ НОВИЧКУ надо начинать изучение PowerShell. Они помогают понять, каким образом надо искать ответы на вопросы по поводу остальных cmdletов.
А всякие get-service,-content,-process и остальные не дают никаких знаний по остальным командам, и нужны для определенных целей.
А всякие get-service,-content,-process и остальные не дают никаких знаний по остальным командам, и нужны для определенных целей.
Sign up to leave a comment.
Топ 7 Powershell командлетов для новичков