Punti chiave
- La verifica della versione di PowerShell è fondamentale per la compatibilità e la sicurezza del sistema.
- Lo script automatizza la verifica di entrambe le versioni di PowerShell, Desktop e Core.
- Utilizza variabili ambientali e un ipotetico cmdlet “Ninja-Property-Set” per la versatilità.
- Progettato per PowerShell, versione 3 o successive, per assicurare la compatibilità con i sistemi moderni.
- Offre un approccio più efficiente rispetto ai metodi di controllo manuale delle versioni.
- Essenziale per gli amministratori IT e gli MSP per garantire la conformità e la sicurezza del sistema.
- Si raccomanda l’uso regolare dello script per verificare costantemente lo stato di integrità del sistema.
- L’integrazione di script come questo in piattaforme come NinjaOne può migliorare l’efficienza della gestione IT.
Il dinamismo della Tecnologia dell’informazione (IT) impone di adattare e comprendere continuamente gli strumenti e gli ambienti con cui interagiamo quotidianamente. Uno di questi strumenti, PowerShell, svolge un ruolo fondamentale nella gestione e nell’automazione dei sistemi Windows. La verifica della versione di PowerShell in uso non è solo una questione di conformità, ma anche un passo fondamentale per garantire la sicurezza e la compatibilità del sistema.
Background
PowerShell, il framework di Microsoft che consente di gestire l’automazione delle attività e la configurazione, è diventato parte integrante del panorama IT. Lo script in questione è progettato per verificare le versioni di PowerShell installate su un sistema, una attività di importanza significativa per i professionisti IT e i fornitori di servizi gestiti (MSP). Conoscere la versione di PowerShell aiuta a mantenere la compatibilità del sistema, a risolvere i problemi e a garantire l’utilizzo delle funzioni di sicurezza più recenti.
Lo script per la verifica della versione di PowerShell:
<# .SYNOPSIS Saves PowerShell Desktop and/or Core Version(s) to a Custom Field. .DESCRIPTION Saves PowerShell Desktop and/or Core Version(s) to a Custom Field. .EXAMPLE (No Parameters) ## EXAMPLE OUTPUT WITHOUT PARAMS ## PowerShell Desktop: 5.1.19041.3570 - PowerShell Core: 7.3.9 PARAMETER: -CustomField "PowerShellVersion" Name of the custom field to save the version of PowerShell to. .EXAMPLE -CustomField "PowerShellVersion" ## EXAMPLE OUTPUT WITH CustomField ## PowerShell Desktop: 5.1.19041.3570 - PowerShell Core: 7.3.9 .OUTPUTS None .NOTES Minimum OS Architecture Supported: Windows 10, Windows Server 2012 R2 Release Notes: Initial Release By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use. Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA). #> [CmdletBinding()] param ( [Parameter()] [String]$CustomField ) begin { if ($env:customField) { $CustomField = $env:customField } } process { # Get PowerShell Desktop Version $PSDesktop = "PowerShell Desktop: $($PSVersionTable.PSVersion)" $PSVersionCF = if ($(Get-Command -Name "pwsh.exe" -ErrorAction SilentlyContinue)) { # Get PowerShell Core Version $pwshVersion = "$(pwsh.exe -version)" -split ' ' | Select-Object -Last 1 $PSCore = "PowerShell Core: $($pwshVersion)" Write-Output "$PSDesktop - $PSCore" } else { Write-Output "$PSDesktop" } Write-Host "`n$PSVersionCF`n" if($PSVersionTable.PSVersion.Major -lt 3){ Write-Error "Can only set Custom Fields on PowerShell Versions 3 or higher." exit 1 } # Save Version(s) to custom field Ninja-Property-Set -Name $CustomField -Value $PSVersionCF } end { }
Accedi a oltre 700 script nel Dojo NinjaOne
Analisi dettagliata
Lo script per la verifica della versione di PowerShell inizia con CmdletBinding, uno standard di PowerShell, e con la dichiarazione di un parametro per un campo personalizzato. Il blocco ‘begin’ controlla la presenza di una variabile ambientale chiamata ‘customField’ e la imposta come $CustomField dello script, se presente.
Nel blocco “process”, lo script recupera innanzitutto la versione di PowerShell Desktop. Ulteriormente verifica la presenza di PowerShell Core cercando di trovare ‘pwsh.exe’. Se viene trovata, recupera la versione Core. Le versioni vengono quindi concatenate e visualizzate. In particolare, lo script controlla se la versione principale di PowerShell è inferiore alla 3, che è un prerequisito per impostare i campi personalizzati.
Infine, nel blocco “end”, lo script utilizza un ipotetico cmdlet “Ninja-Property-Set” per salvare queste versioni in un campo personalizzato, sfruttando il valore di $CustomField.
Casi d’uso potenziali
Immagina che un amministratore IT di una grande organizzazione debba assicurarsi che tutti i sistemi utilizzano versioni di PowerShell compatibili per una nuova distribuzione. Utilizzando questo script, possono verificare rapidamente le versioni di PowerShell nei vari sistemi, facilitando una distribuzione sicura e fluida.
Confronti
I metodi alternativi per eseguire la verifica della versione di PowerShell includono il controllo manuale o l’utilizzo di script diversi. Tuttavia, questo script semplifica il processo, offrendo una visione consolidata di entrambe le versioni di PowerShell Desktop e Core, una funzionalità che manca in molti altri approcci.
Domande frequenti
D1: Lo script per la verifica della versione di PowerShell può fare la differenza tra le versioni di PowerShell Desktop e Core?
R1: Sì, identifica e visualizza distintamente entrambe le versioni.
D2: Cosa accade se PowerShell Core non è installato sul sistema?
R2: Lo script visualizzerà solo la versione di PowerShell Desktop.
D3: Questo script è compatibile con le versioni precedenti di PowerShell?
R3: Richiede la versione 3 o successive di PowerShell per essere pienamente operativo.
Implicazioni
L’utilizzo di versioni di PowerShell obsolete o incompatibili può causare vulnerabilità di sicurezza e problemi di compatibilità. Questo script aiuta a identificare in modo proattivo tali scenari, contribuendo a rendere più sicuro l’ambiente IT.
Raccomandazioni
Le best practice prevedono l’esecuzione regolare di questo script per la verifica delle versioni, soprattutto prima di implementazioni o aggiornamenti importanti. Si consiglia inoltre di integrare questo script nei regolari controlli di integrità del sistema.
Considerazioni finali
In un periodo in cui la gestione efficiente e sicura dell’IT è fondamentale, strumenti come NinjaOne offrono una piattaforma in grado di integrare tali soluzioni di scripting, garantendo una gestione semplificata e una maggiore sicurezza. La verifica della versione di PowerShell è una parte piccola ma importante nel mantenere l’integrità del sistema e NinjaOne può essere determinante per garantire che tali attività siano eseguite con facilità e precisione.