Подавление VERBOSE для Import-Module

Я импортирую Carbon в мой скрипт PowerShell; однако при запуске моего скрипта с -Verbose Carbon также выводит много операторов VERBOSE.

Можно ли импортировать модуль молча, чтобы я мог игнорировать подробные инструкции в импортированном модуле и оставить только свои собственные?

6 ответов

Решение

Попробуйте импортировать модуль Carbon -Verbose:$false

Я не мог заставить вышеуказанные решения работать со всеми модулями (я использую Powershell 4.0). Это решение, которое я в итоге использовал, и до сих пор оно работало с каждым модулем, который я использовал:

Вверху моего файла сценария у меня есть это, чтобы заставить -Verbose работать для сценария (сценарий не имеет параметров):

[CmdletBinding()]
Param()

Затем, когда я готов импортировать модули, я делаю это:

$SaveVerbosePreference = $global:VerbosePreference;
$global:VerbosePreference = 'SilentlyContinue';

Import-module "Whatever";

$global:VerbosePreference = $SaveVerbosePreference;

Тогда я просто называю скрипт так:

PowerShell -file something.ps1 -Verbose

Модуль импорта Углерод -Вербоз:$false | Из-Null

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

Import-Module Carbon 4>&5

Это перенаправляет подробный поток (4) в поток отладки (5). Когда вы запускаете ваш скрипт с ключом Verbose, он не будет выводить подробные строки из Import-Module, но вы можете вернуть его обратно, запустив ваш скрипт с ключом -Debug.

Так как Carbon кажется модулем скриптов, вы можете попробовать установить $script:VerbosePreference (или просто $VerbosePreference) чтобы 'SilentlyContinue' внутри самого модуля carbon.psm1, Область применения модуля должна сделать свое дело.

Первый вклад, надеюсь, это поможет.

      ipmo $dir\$i 3>$null
Другие вопросы по тегам