Какой ваш лучший сценарий гипер-производительности PowerShell? - PullRequest
4 голосов
/ 09 августа 2010

Я вхожу в сценарии PowerShell и впечатлен его мускулатурой, гибкостью и мелкостью, особенно по сравнению с классическими реализациями командной строки Microsoft для DOS. По сути, я хочу, чтобы сообщество быстро заработало ваш опыт работы с ним.

Какой ваш лучший сценарий гиперпроизводительности PowerShell?
Правила участия для сценария:

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

Решение об отправке этого вопроса основано на этом вопросе и этом вопросе , поскольку ни один из них не предназначен специально для PowerShell.

Я с нетерпением жду возможности использовать предоставленные вами сценарии, и знаю, что другие тоже будут в этом участвовать, особенно тот факт, что за лучший выбор будут выбраны лучшие из них - отличный способ оценки сообщества.

Отказ от ответственности: я понимаю, что достоинства подобных вопросов часто обсуждаются, но я опубликую их и предоставлю возможность сообществу принять решение. Спасибо.

Ответы [ 3 ]

4 голосов
/ 09 августа 2010

Снижение набора текста, меньше ошибок и снижение шума.

Function ql {$args}

ql tom john harry | % {$_}

Без функции ql необходимо добавлять кавычки "и запятые,

"tom", "john", "harry" | % {$_}

Список месяцев

$months = ql Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
3 голосов
/ 09 августа 2010

Рекурсивно возвращает все файлы из текущего каталога, но не каталогов:

gci . *.* -rec | where { ! $_.PSIsContainer }
2 голосов
/ 10 августа 2010

Принимая во внимание правила помолвки было нелегко выбрать фаворита из моего арсенала ... Ну, на самом деле это не мой лучший сценарий гипер-продуктивности, но он соответствует всем правилам, и это действительно экономит секунды здесь и там при экспорте данных в CSV, что я делаю в интерактивном режиме довольно часто.

Это тривиальная оболочка Export-Csv, которая добавляет расширение .CSV к указанному пути вывода и запрещает записывать информацию о типе (которая записывается по умолчанию и делает файлы .CSV не читаемыми для всех приложений, кроме PowerShell).

<#
.SYNOPSIS
    Export-Csv + auto CSV extension + NoTypeInformation

.DESCRIPTION
    Parameters are standard Export-Csv parameters but:
    -Path: extension .CSV is added if not yet
    -NoTypeInformation: the switch is added if not yet
#>

param
(
    $Path
)

if ($Path -and $Path -notlike '*.csv') {
    $PSBoundParameters['Path'] = $Path + '.csv'
}

if (!$PSBoundParameters.ContainsKey('NoTypeInformation')) {
    $PSBoundParameters.Add('NoTypeInformation', $true)
}

$input | Export-Csv @PSBoundParameters
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...