Mam nadzieję użyć skryptletu Write-Verbose
w skryptach i funkcjach. Działa zgodnie z oczekiwaniami w plikach skryptów (.ps1), ale nie w plikach modułu (.psm1) - polecenie jest ignorowane w modułach.Write-Verbose ignorowane w module PowerShell
Running następujący scenariusz:
PS> .\scaffold.ps1 -verbose
Produkuje:
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"
}
Nie skojarzyłem w tym momencie manifestu (.psd1) z modułem (.psm1).
Czy jest wymagana specyficzna dla modułu składnia, której należy użyć?
** Edycja **
Co potrzebne jest sposobem ustalenia, jeśli flaga -verbose
został ustawiony na pliku .ps1 więc mogę przekazać je do pliku .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"
Dzięki za udostępnienie; zgadzają się, że wydaje się to jedyną rzeczą, która działa; ale pachnie źle ... Jako takie mają sugestię dotyczącą funkcji. Usługa MS Connect jest wyłączona dla bankomatu PowerShell, więc na razie bloguj: https://developer42.wordpress.com/2017/02/04/powershell-suggestion-simplify-write-verbose-in-modules/ – JohnLBevan
Aktualizacja: zaloguj się jako wydanie na stronie GitHub PowerShell: https://github.com/PowerShell/PowerShell/issues/3106 – JohnLBevan