Ich hoffe, das Write-Verbose
Commandlet in Skripten und Funktionen zu verwenden. Es funktioniert wie erwartet in Skriptdateien (.ps1), jedoch nicht in Moduldateien (.psm1) - das Befehlszeil wird in Modulen ignoriert.Write-Verbose ignoriert in PowerShell-Modul
Ausführen des folgenden Skripts:
PS> .\scaffold.ps1 -verbose
Produziert:
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"
}
Ich habe zu diesem Zeitpunkt kein Manifest (.psd1) mit dem Modul (.psm1) verknüpft.
Gibt es eine modulspezifische Syntax, die ich verwenden muss?
** bearbeiten **
Was ich brauche, ist ein Weg, um festzustellen, ob der -verbose
-Flag auf der PS1-Datei festgelegt worden, so kann ich es in die .psm1 Datei übergeben.
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"
Danke für das Teilen; stimme zu, dass dies das einzige zu sein scheint, was funktioniert; aber es riecht schlecht ... Als solche haben einen Feature-Vorschlag. MS Connect ist für PowerShell atm deaktiviert, so dass Sie jetzt blogged: https://developer42.wordpress.com/2017/02/04/powershell-suggestion-simplify-write-verbose-in-modules/ – JohnLBevan
Update: Protokolliert als ein Problem auf der GitHub-Seite von PowerShell: https://github.com/PowerShell/PowerShell/issues/3106 – JohnLBevan