Я новичок во вселенной PowerShell и только что наткнулся на предупреждение в VS, в котором говорилось, что я не использую "Одобренные глаголы" .Таким образом, я гуглил это и нашел весь список утвержденных глаголов для пользовательских команд.
Однако, некоторые довольно похожие глаголы имеют совершенно другое значение в этом списке.Итак, я попытался обобщить различия;мне нужно знать, является ли мое понимание этих различий точным или нет.
Get
против Find
против Search
Get-*
извлекает точное что-то (то есть объект , ресурс , значение ... Все, что может быть представлено POCO в PowerShell и .NET)из данного контейнера вещей.Требуется относительно коротких времени.
Find-*
пытается извлечь что-то из заданного контейнера вещей.Требуется относительно долго времени.
Search-*
пытается извлечь ссылку чего-либо из данного контейнера вещей.Требуется относительно long time.
Select
Select-*
извлекает или преобразует из своего ввода, чтобы произвести несколько иначеструктурированный вывод.Думайте об этом как о предложении Linq's Select .
В зависимости от заданных параметров, Select-Object
может действовать как фильтр как Where-Object
, через Where-Object
гораздо более низкий уровень.
Get
против Read
против Receive
Get-*
извлекает данные из ресурса (например, файла, объекта(переменная среды).
Read-*
извлекает данные из консоли или конвейера .Понятие stream не очень далеко.
Receive-*
извлекает данные асинхронно (например, из сети).
Set
против Write
против Send
Set-*
исправляет данные ресурса (например, файл, объект, переменную среды).
Write-*
создает и отображает данные на консоли или конвейере.Запись данных является окончательным результатом .
Send-*
выдает данные асинхронно (например, по сети).Отправка данных - это только первый шаг, эти данные будут обработаны позже , вероятно, другим процессом.
Write
против Out
Write-*
производит некоторый вывод.
Out-*
перенаправляет вывод конвейера.Думайте об этом как о перенаправлениях Bash (например, > /dev/null
, >> /var/log/cake.log
).
New
против Add
New-*
составляет марку новое что-то , вероятно, пустое или в состоянии по умолчанию.
Add-*
добавляет данные к существующему чему-то .
Add
противRegister
Add-*
добавляет данные к чему-то .
Register-*
создает запись о чем-то в контейнере (например, в базе данных).
Initialize
против Install
Initialize-*
выполняет первую настройку чего-либо.
Install-*
настраивает что-то, когда этого не было раньше .Install
более высокий уровень, чем Initialize
: его можно увидеть как { New | Move | Copy } + [ Initialize ]
.
New
против Install
New-*
делаетup что-то совершенно новое, вероятно в состоянии по умолчанию .
Install-*
помещает существующее что-то в нужное место.Это может также настроить это кстати.Install
является более высоким уровнем, чем New
: его можно увидеть как { New | Move | Copy } + [ Initialize ]
.