Spero di utilizzare il comando Write-Verbose
in script e funzioni. Funziona come previsto nei file di script (.ps1), ma non nei file del modulo (.psm1): il comando viene ignorato nei moduli.Write-Verbose ignorato nel modulo PowerShell
eseguendo lo script seguente:
PS> .\scaffold.ps1 -verbose
Produce:
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"
}
Non ho associato un manifest (.psd1) con il modulo (.psm1) a questo punto.
Esiste una sintassi specifica del modulo che devo utilizzare?
** Modifica **
cosa ho bisogno è un modo per determinare se il flag -verbose
è stata impostata sul file ps1 in modo da poter passare al file 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"
Grazie per la condivisione; d'accordo che questa sembra essere l'unica cosa che funziona; ma ha un cattivo odore ... Come tale ha un suggerimento. MS Connect è disattivato per PowerShell atm, quindi è stato effettuato il blogging per ora: https://developer42.wordpress.com/2017/02/04/powershell-suggestion-simplify-write-verbose-in-modules/ – JohnLBevan
Aggiornamento: registrato come Problema sulla pagina GitHub di PowerShell: https://github.com/PowerShell/PowerShell/issues/3106 – JohnLBevan