А решение, как оказалось, достаточно простое:
powershell -nologo -noprofile "%{[Net.ServicePointManager]::SecurityProtocol = 'Tls12, Tls11, Tls, Ssl3'} ;(Invoke-WebRequest -UseBasicParsing -Uri <ULR>).StatusCode;exit [int]$Error[0].Exception.Status"
Результат считывается из значение свойства “Status
” члена “Exception
” в переменной $Error
. Это помогает обработать ситуации типа такой
Invoke-WebRequest : Невозможно разрешить удаленное имя: ‘cle.linux.org.tw’
строка:1 знак:77
+ %{[Net.ServicePointManager]::SecurityProtocol = ‘Tls12, Tls11, Tls, Ssl3’} ;Invo …
+ ~
~~~
+ CategoryInfo: InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Status Property System.Net.WebExceptionStatus Status {get;}
, которое и даёт ответ, было соединение или нет.
Ну, вот, как‐то так. Почти полный аналог “curl”.
Throughout this guide, we’ll explore the fundamentals of PowerShell and provide practical examples to help you grasp its concepts and unleash its potential in your daily workflows.
1. Opening PowerShell
1.1 Windows
- Press
Win + X
, then select “Windows PowerShell” or “Windows PowerShell (Admin)”.
1.2 macOS
- Open “Terminal” from the Applications folder, then type
pwsh
and press Enter.
1.3 Linux
- Open your terminal, then type
pwsh
and press Enter.
2. Basic PowerShell Commands
2.1 Get-Help
The Get-Help
command is used to get information about PowerShell commands.
Get-Help Get-Process
2.2 Get-Process
The Get-Process
command retrieves a list of running processes.
Get-Process
2.3 Get-Service
The Get-Service
command retrieves a list of installed services.
Get-Service
2.4 Get-ChildItem
The Get-ChildItem
command lists files and directories in the current directory.
Get-ChildItem
2.5 Set-Location
The Set-Location
command changes the current working directory.
Set-Location C:\Windows\System32
2.6 Clear-Host
The Clear-Host
command clears the PowerShell console screen.
Clear-Host
3. Variables and Output
3.1 Variables
You can create variables in PowerShell using the $
symbol.
$name = "John"
$age = 30
3.2 Output
You can display the value of a variable using the Write-Output
command.
Write-Output "Hello, $name! You are $age years old."
4. Scripts
4.1 Creating a Script
You can create PowerShell scripts with a .ps1
extension.
# ScriptName.ps1
$name = "John"
Write-Output "Hello, $name!"
4.2 Running a Script
./ScriptName.ps1
5. Control Structures
5.1 If Statement
The if
statement executes code based on a condition.
$number = 10
if ($number -gt 5) {
Write-Output "$number is greater than 5"
}
5.2 For Loop
for ($i = 1; $i -le 5; $i++) {
Write-Output "Count: $i"
}
5.3 Foreach Loop
The foreach
loop iterates through items in a collection.
$fruits = "Apple", "Banana", "Orange"
foreach ($fruit in $fruits) {
Write-Output "Fruit: $fruit"
}
6. Working with Files
6.1 Reading a File
You can read the contents of a file using Get-Content
.
Get-Content C:\path\to\file.txt
6.2 Writing to a File
You can write to a file using Set-Content
.
Set-Content C:\path\to\newfile.txt "This is the content of the file."
6.3 Copying Files
The Copy-Item
command is used to copy files.
Copy-Item C:\path\to\file.txt D:\backup\file.txt
7. Working with Services
7.1 Starting a Service
The Start-Service
command starts a service.
Start-Service -Name "serviceName"
7.2 Stopping a Service
The Stop-Service
command stops a service.
Stop-Service -Name "serviceName"
7.3 Restarting a Service
The Restart-Service
command restarts a service.
Restart-Service -Name "serviceName"
8. Conclusion
- Official PowerShell Documentation
- PowerShell Community Resources
Вот команды bash, а вы в 80% описали отдельные утилиты, не связанные с bash
Команды bash
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
These shell commands are defined internally. Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.
A star (*) next to a name means that the command is disabled.
job_spec [&] history [-c] [-d offset] [n] or history -anrw [filename]>
(( expression )) if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMAN>
. filename [arguments] jobs [-lnprs] [jobspec ...] or jobs -x command [args]
: kill [-s sigspec | -n signum | -sigspec] pid | jobspec .>
[ arg... ] let arg [arg ...]
[[ expression ]] local [option] name[=value] ...
alias [-p] [name[=value] ... ] logout [n]
bg [job_spec ...] mapfile [-d delim] [-n count] [-O origin] [-s count] [-t>
bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u > popd [-n] [+N | -N]
break [n] printf [-v var] format [arguments]
builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir]
caller [expr] pwd [-LP]
case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esa> read [-ers] [-a array] [-d delim] [-i text] [-n nchars] >
cd [-L|[-P [-e]] [-@]] [dir] readarray [-d delim] [-n count] [-O origin] [-s count] [>
command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] or readonly -p
compgen [-abcdefgjksuv] [-o option] [-A action] [-G globp> return [n]
complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A act> select NAME [in WORDS ... ;] do COMMANDS; done
compopt [-o|+o option] [-DEI] [name ...] set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
continue [n] shift [n]
coproc [NAME] command [redirections] shopt [-pqsu] [-o] [optname ...]
declare [-aAfFgilnrtux] [-p] [name[=value] ...] source filename [arguments]
dirs [-clpv] [+N] [-N] suspend [-f]
disown [-h] [-ar] [jobspec ... | pid ...] test [expr]
echo [-neE] [arg ...] time [-p] pipeline
enable [-a] [-dnps] [-f filename] [name ...] times
eval [arg ...] trap [-lp] [[arg] signal_spec ...]
exec [-cl] [-a name] [command [arguments ...]] [redirecti> true
exit [n] type [-afptP] name [name ...]
export [-fn] [name[=value] ...] or export -p typeset [-aAfFgilnrtux] [-p] name[=value] ...
false ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [c> umask [-p] [-S] [mode]
fg [job_spec] unalias [-a] name [name ...]
for NAME [in WORDS ... ] ; do COMMANDS; done unset [-f] [-v] [-n] [name ...]
for (( exp1; exp2; exp3 )); do COMMANDS; done until COMMANDS; do COMMANDS; done
function name { COMMANDS ; } or name () { COMMANDS ; } variables - Names and meanings of some shell variables
getopts optstring name [arg] wait [-fn] [id ...]
hash [-lr] [-p pathname] [-dt] [name ...] while COMMANDS; do COMMANDS; done
help [-dms] [pattern ...] { COMMANDS ; }
В хабе “разработка под Windows” я бы все-таки не ожидал видеть инструкцию по применению утилит из *nix – учитывая, что в Windows есть PowerShell.
PowerShell очень медленно работает.
Утилиты из СygWin делают то же в 3 раза быстрее.
(а) мне хватает скорости PowerShell
(б) я не хочу (а иногда – не могу) ставить cygwin
для Windows powershell отличный инструмент, единственное заметное неудобство – отличается набор команд в разных версиях , приходится при написании ориентироваться на 3 версию
мне хватает скорости PowerShell
Что-то народ не особо ратует за PowerShell. Не подскажете почему?

Понятия не имею. Подозреваю, что зависит от выборки, на которой вы собирали данные.
если вызывать из повершелла гну утилиты, то может и медленно.
Но Powershell не под них оптимизирован. Сам по себе он вполне себе быстр.
Наверное этот текст обидит чувства Windows пользователей, так как тут по сути предлагается использовать Unix(овые) утилиты в OS Windows.
Многие пользователи Windows, которых я знаю, религиозно презирают Linux и всё, что с этим связано.
Я вот пользуюсь и Windows, и Linux (точнее, его контейнерными производными и изредка WSL). Вопрос не в презрении, вопрос в выборе подходящего инструмента.
Но возможно не стоит публиковать текст, если вы серьезно думаете, что он обидит чувства какой-то значимой группы читателей.
Многие пользователи Windows, которых я знаю, религиозно презирают Linux и всё, что с этим связано.
в 99% так делают технически ограниченные люди
Наверное этот текст обидит чувства Windows пользователей, так как тут по сути предлагается использовать Unix(овые) утилиты в OS Windows.
Не пользователей, а ламеров.
Для сведения, OS Windows сама когда-то поддерживала POSIX во времена windows NT и windows 2000, а сейчас внедрила еще более полноценный WSL
cygwin и mingw были доступны всем, кто хотел.
Презирать религиозно – изначально не очень подход для технического человека.
В хабе “разработка под Windows” я бы все-таки не ожидал видеть инструкцию по применению утилит из *nix – учитывая, что в Windows есть PowerShell.
Вы можете для каждой команды из этой заметки привести команду из PowerShell, которая делает ту же работу?
Наверное, могу, но не хочу тратить на это свое время.
Наверное, могу, но не хочу тратить на это свое время.
Спасибо, Вы только что доказали нам всем бессилие PowerShell!
Эээ, нет, я ничего вам не доказал.
Извините, мне кажется, вас несет.
du -lhs `ls`
оч помогает искать место на чистой системе, статья должна быть докторская конечно.
cygwin в windows очень помогает
Полезные Утилиты Командной Строки Bash
Все команды bash по своему полезны, да.
И утилиты из coreutils тоже, даа..
Есть ошибки. И заголовок неточный.
Не нужно писать статью, если вы просто решили поделиться полезными командами из своего персонального читщита, но не владеете материалом. Тем более что подобных базовых примеров много не только в инете но и на Хабре.
Как можно путать баш и шелл, если bash и есть shell (один из многих)?
Как можно путать баш и шелл, если bash и есть shell (один из многих)?
“консоль гит и консоль гит-баш”.
Git for Windows создаёт ярлык и для Git Bash, и для Git CMD. Они оба откроют консоль, но очень разную.
А так, что есть оригинальный sh (который и есть shell), и есть множество потомков-наследников: bash, dash, fish, zsh, и так далее.
Ну и я часто получал вопрос вида – “What shell do you prefer ?” И всегда было понятно о чем речь, при этом я никогда не душнил типа – не shell, а linux command shell )))
Из этой же серии – “Какой линукс ты используешь ?” Формально вопрос не совсем корректный, но все все понимают
А еще есть переменная окружения SHELL
И всегда было понятно о чем речь
но консоль гит и линукс шелл это настолько разные вещи, что в данном случае следует уточнять, когда автор статьи утверждает про консоль гит (а не гит-баш).
Переменная окружения SHELL в данном случае не про то вообще. Мы говорим про разницу в терминах между shell и git.
Ведь cmd.exe тоже shell. И explorer.exe тоже shell.
А так, что есть оригинальный sh (который и есть shell), и есть множество потомков-наследников:
Спасибо, конечно, но на 4-м десятке лет работы с Unix я это знаю чуть более, чем хорошо. А теперь попробуйте рассказать мне, чем будут отличаться способы запуска и результаты исполнения любых из приведённых автором команд?
Видите ли, “bourne again shell” или “z shell” не перестали быть shell’ами из-за своих названий. Более того, все перечисленные вами shell’ы — одного поля ягоды, все выросли из bourne shell. И автор статьи не привел ни одного примера откровенного “башизма”, все его примеры будут одинаково работать во всех bourne-shell-наследованных шеллах, поэтому задам вопрос ещё раз — как можно путать shell и shell? А ещё лучше — покажите, где именно автор этой статьи (да, убогой, тут даже спорить не о чем) “путает баш и шелл” (в чём его обвинил автор изначального комментария ветки)?
Git for Windows создаёт ярлык и для Git Bash, и для Git CMD. Они оба откроют консоль, но очень разную.
Прежде, чем писать такое, следовало бы хоть минимально исследовать вопрос.
До установки Windows Terminal (в составе которого есть Open Console), в Windows была и есть одна единственная “консоль” — ранее conemu.exe, ныне conhost.exe. Я не просто так беру в кавычки, поскольку функционально это никакая не консоль, а весьма убогий эмулятор терминала, который способен лишь рендерить символы да интерпретировать довольно скромный набор управляющих последовательностей. От него, собственно, большего и не требуется. И какой бы “ярлык” Git for Windows ты ни выбрал — хоть Git bash, хоть Git CMD — та самая пресловутая “консоль” у этих окошек будет одна и та же. А вот что в них будет действительно “очень разным”, так это интерпретатор команд, взаимодействующий с пользователем. Так называемый шелл, ага. Только в одном случае он будет mingw-сборкой GNU bash, а в другом — убогий родной виндовый cmd.exe. Но “консоль” — та же самая, независимо от выбора “ярлыка”. Да, и на работу собственно Git это не влияет примерно никак.
Но мой вопрос — чем же всё таки отличаются “консоль гит” (и что это вообще такое?) и “консоль гит-баш” — ответа я так и не получил. Но я, признаться, не особо и претендую.
Установите гит для винды.
Запустите git-bash.exe и git-cmd.exe
Выполните команду help в каждой из них
Скажите – вы не видите разницы?
До установки Windows Terminal (в составе которого есть Open Console), в Windows была и есть одна единственная “консоль” — ранее conemu.exe, ныне conhost.exe
С каких пор conemu (conemu.github.io опенсорс проект) внезапно превратился в ms conhost.exe?
Как и автор, вы таки путаете термины консоль и терминал.
Консоль это консоль управления.
Поэтому ярлыки, которые ведут к git-bash и git-cmd отличаются тем, что они ведут к разным консолям управления. Ввтор статьи в этом не разбирается, называя git-cmd консолью гита. В этом и смысл, что git-cmd не относится к linux shell/bash никак.
Еще неопытных пользователей может сильно смущать что в PATH в обоих случаях попадают gnu утилиты, которые могут продолжать работать в обеих консолях. И те, кто не понимает разницы между linux shell и gnu tools тоже могут запутаться.
Я всегда ставлю модуль Posh-Git
и с ним замечательно работается в git
прямо из обычного PowerShell
без всяких git-bash(cmd)
С гит и так работается из powershell. Posh-Git просто добавляет удобства автокомплитом и форматированием.
Но под капотом гит все равно юзает gnu утилиты именно тем способом, который принят в linux shell, а не в повершелле
Очень очень плохая статья.
Тем не менее народ себе в закладки статью-то понадобавлял.

А я не душнила. Сохраню в закладках и буду пользоваться по необходимости. Если это работает, то мне не важно, как это называется. Спасибо, автор!
Раньше был такой шутливый вопрос: чем отличается чайник и ламер?
Уважаемый, а хотите я анекдот про теоретиков и практиков расскажу?
Таким практикам, как автор статьи, я регулярно помогаю на тостере.
Команды Bash можно с легкость отрабатывать на Windows, если установить GIT и открыть консоль GIT.
То, что при установке git, устанавливается ещё и МинГВ, никак не оправдывает.
С таким же успехом можно было сказать, что для работы в Юникс-образной командной строке установите ПО ” Ёклмн”, в состав которого случайно входит МинГВ. ))
Я пользуюсь WSL если мне нужно сделать что-то непосредственно на моем компе.
Я бы еще добавил одну из самых часто используемых команд:
Ну и возможны вариации с фильтрами, сортировками и уникальными значениями.
netstat deprecated. Нужно отвыкать.
Ну, как бы не depecated, а obsoleted. И только в пингвиниксе. У остальных живёт и развивается.
Это команда приведена только для примера, что через консоль можно делать поиск поверх предыдущего поиска. Так называемый многоступенчатый поиск. Встроенному поиску из-под GUI-IDE такое даже и не снилось.
Если говорить метафорично, то утилиты Unix – это как химическая посуда (пробирки, колбы, мензурки, воронки, фильтры, капельницы, часовые стекла, стеклянные палочки), только применительно к данным (числам и тексту). Видимо авторы UNIX в 196х-197х были серьезно вдохновлены химией при разработке компьютерных консольных утилит. Согласитесь, что ну невозможно не заметить этих аналогий между UNIX утилитами и химической посудой.

Плохая аналогия подобна котенку с дверцей.