Attualmente sto usando seguente struttura nel mio script:Impostare la modalità rigorosa in PowerShell per tutti i moduli
HighLevel.ps1
LowLevelModule1.psm1
LowLevelModule2.psm1
...
Ora, sto impostando la modalità rigorosa nel file di PS1 di ottenere almeno un certo tipo di sicurezza in fase di esecuzione . Sfortunatamente, cllaing Set-StrictMode -Version Latest
abiliterà la modalità rigorosa solo per l'ambito corrente e tutti gli ambiti figlio (questo è in base alla progettazione Prova: https://technet.microsoft.com/en-us/library/hh849692.aspx).
Per quanto riguarda l'attuale architettura PS, la modifica della modalità rigorosa nel file ps1 modifica la configurazione del livello di script. Ma i moduli hanno il proprio ambito di script in modo che i moduli non ereditino le regole dei genitori.
Come soluzione temporanea, posso inserire Set-StrictMode
in ogni file PSM1, ma non sembra l'approccio migliore perché non sarei in grado di dare una possibilità al client del mio modulo di decidere, attivare la modalità rigorosa o meno.
Lo stesso problema esiste per la configurazione $VerbosePreferences
. Questa configurazione è anche abilitata per scope, quindi devo propagare queste informazioni attraverso i limiti del modulo un po 'come.
Qualche suggerimento su come modificare la modalità rigorosa e le preferenze dettagliate a livello globale?
P.S. La modifica del profilo $ per questo scopo non è un'opzione.
Penso che l'impostazione '$ global: VerbosePreference' a livello globale dovrebbe funzionare per i moduli. Per quanto riguarda la modalità rigorosa, non è così. A proposito, ho aggiunto il problema della modalità rigorosa a [PowerShellTraps] (https://github.com/nightroman/PowerShellTraps), vedi * Strict-mode-is-not-propagated *. –