Write-Verbose
コマンドレットをスクリプトと関数で使用したいと考えています。スクリプト(.ps1)ファイルでは正常に動作しますが、モジュール(.psm1)ファイルでは動作しません。コマンドレットはモジュールでは無視されます。次のスクリプト実行Write-VerboseがPowerShellモジュールで無視される
:
PS> .\scaffold.ps1 -verbose
が生成されます
VERBOSE: starting foo
path: c:\bar.txt
[missing entry here - 'verbose path: c:\bar.txt']
VERBOSE: ending foo
scaffold.ps1:
[cmdletbinding()]
param()
import-module Common -force
write-verbose "starting foo"
foo "c:\bar.txt"
write-verbose "ending foo"
Common.psm1:
function foo {
[cmdletbinding()]
Param(
[string]$path
)
write-host "path: $path"
write-verbose "verbose path: $path"
}
0123を
この時点でマニフェスト(.psd1)をモジュール(.psm1)に関連付けていません。
モジュール固有の構文が必要ですか?私は必要なもの
**編集**
は-verbose
フラグが.PS1ファイルに設定されている場合、私は.PSM1ファイルにそれを渡すことができるように決定する方法です。
scaffold.ps1:
[cmdletbinding()]
param()
import-module Common -force
write-verbose "starting foo"
foo "c:\bar.txt" $verbose_flag # pass verbose setting to module based on what was set on the script itself
write-verbose "ending foo"
共有ありがとうございます。これが働く唯一のものと思われることに同意する;しかし、それは悪いにおい...そのような機能の提案を持っている。 MS ConnectはPowerShell atmで無効になっているので、今すぐブログを開いてください:https://developer42.wordpress.com/2017/02/04/powershell-suggestion-simplify-write-verbose-in-modules/ – JohnLBevan
アップデート: PowerShellのGitHubページの問題:https://github.com/PowerShell/PowerShell/issues/3106 – JohnLBevan