Подавление VERBOSE для Import-Module
Я импортирую Carbon в мой скрипт PowerShell; однако при запуске моего скрипта с -Verbose Carbon также выводит много операторов VERBOSE.
Можно ли импортировать модуль молча, чтобы я мог игнорировать подробные инструкции в импортированном модуле и оставить только свои собственные?
6 ответов
Я не мог заставить вышеуказанные решения работать со всеми модулями (я использую Powershell 4.0). Это решение, которое я в итоге использовал, и до сих пор оно работало с каждым модулем, который я использовал:
Вверху моего файла сценария у меня есть это, чтобы заставить -Verbose работать для сценария (сценарий не имеет параметров):
[CmdletBinding()]
Param()
Затем, когда я готов импортировать модули, я делаю это:
$SaveVerbosePreference = $global:VerbosePreference;
$global:VerbosePreference = 'SilentlyContinue';
Import-module "Whatever";
$global:VerbosePreference = $SaveVerbosePreference;
Тогда я просто называю скрипт так:
PowerShell -file something.ps1 -Verbose
Я думаю, что лучшее решение, чем отмеченное здесь, - перенаправить подробный вывод в другой поток. Таким образом, вы можете распечатать вывод, если он вам нужен, и он не распухнет навсегда:
Import-Module Carbon 4>&5
Это перенаправляет подробный поток (4) в поток отладки (5). Когда вы запускаете ваш скрипт с ключом Verbose, он не будет выводить подробные строки из Import-Module, но вы можете вернуть его обратно, запустив ваш скрипт с ключом -Debug.
Так как Carbon кажется модулем скриптов, вы можете попробовать установить $script:VerbosePreference
(или просто $VerbosePreference
) чтобы 'SilentlyContinue'
внутри самого модуля carbon.psm1
, Область применения модуля должна сделать свое дело.