×
Ricerca articoli
Cerca e inserisci il collegamento a un articolo pubblicato da TurboLab.it
Digita almeno 3 caratteri, poi premi "Invio"
I "Commenti" ad ogni articolo pubblicato sul nostro sito sono raccolti qui.
Regole del forum
Puoi rispondere alle discussioni già presenti, ma non aprirne di nuove.
crazy.cat
Amministratore
Messaggi: 13558 Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Has thanked: 7 times
Been thanked: 97 times
Messaggio
da crazy.cat » dom mar 22, 2026 7:19 pm
Lo script powershell per estrarre informazioni dal computer
Da tempo volevo trovare il modo di fare uno script PowerShell, in grado di estrarre informazioni dal computer che mi dessero un quadro generale dello stato e dei problemi di quel sistema operativo. Dopo averne trovato uno in un sito Italiano, ma generato da una AI in lingua inglese, e che quindi dava molti errori perché il linguaggio del sistema operativo era diverso, ho iniziato a lavorare al mio. [continua.. ]
---
Cosa ne pensi? Lascia il tuo commento qui sotto.
pegaso
Livello: Floppy disk (3/15)
Messaggi: 40 Iscritto il: dom mag 19, 2024 12:39 pm
Has thanked: 1 time
Messaggio
da pegaso » lun mar 23, 2026 1:09 am
Eseguendo i due file in entrambi i casi compare per una frazione di secondo la finestra di PawerShell e poi si chiude immediatamente e nel secondo file non mi chiede nulla riguardo al salvataggio.
Cosa potrebbe essere il problema?
L'urgenza è determinata dal lato in cui ti trovi della porta.
crazy.cat
Amministratore
Messaggi: 13558 Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Has thanked: 7 times
Been thanked: 97 times
Messaggio
da crazy.cat » lun mar 23, 2026 3:19 am
pegaso ha scritto: lun mar 23, 2026 1:09 am
Cosa potrebbe essere il problema?
Leggi la parte:
"se la schermata di PowerShell si chiude velocemente o ottenete degli errori ne dovrete autorizzare l'esecuzione"
https://turbolab.it/windows-10/come-att ... licies-966
La prima legge della dietetica sembra essere: se il sapore è buono, a te fa male.
pegaso
Livello: Floppy disk (3/15)
Messaggi: 40 Iscritto il: dom mag 19, 2024 12:39 pm
Has thanked: 1 time
Messaggio
da pegaso » lun mar 23, 2026 7:28 am
Questo articolo me lo ero perso
L'urgenza è determinata dal lato in cui ti trovi della porta.
CUB3
Moderatore
Messaggi: 4904 Iscritto il: lun gen 26, 2015 10:13 am
Has thanked: 59 times
Been thanked: 81 times
Messaggio
da CUB3 » lun mar 23, 2026 11:31 am
Eseguendo lo script su una macchina virtuale con Windows 11 Home "curato" con Winhance , ottengo un errore:
Questo contenuto è nascosto, ma senza JavaScript non puoi gestirlo correttamente. Passa con il mouse sopra a questo testo per visualizzarlo!
Inoltre, non so se relativo all'errore precedente o alla cura di Winhance, la versione di Windows rilevata è diversa da quella reale:
Questo contenuto è nascosto, ma senza JavaScript non puoi gestirlo correttamente. Passa con il mouse sopra a questo testo per visualizzarlo!
"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable. " Mikko Hypponen
crazy.cat
Amministratore
Messaggi: 13558 Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Has thanked: 7 times
Been thanked: 97 times
Messaggio
da crazy.cat » lun mar 23, 2026 11:43 am
CUB3 ha scritto: lun mar 23, 2026 11:31 am
Inoltre, non so se relativo all'errore precedente o alla cura di Winhance, la versione di Windows rilevata è diversa da quella reale:
Ho anche io lo stesso problema, volevo aprire una discussione nel forum microsoft per capire perché anche se ci metto windows 11 in quella chiave di registro poi quando riapro il pc ritorna windows 10.
Per l'altro errore non hai programmi installati e non ti ha creato la chiave di registro? (tiro a indovinare)
La prima legge della dietetica sembra essere: se il sapore è buono, a te fa male.
CUB3
Moderatore
Messaggi: 4904 Iscritto il: lun gen 26, 2015 10:13 am
Has thanked: 59 times
Been thanked: 81 times
Messaggio
da CUB3 » lun mar 23, 2026 11:55 am
Programmi installati ne ho pochi:
- Firefox
- FileZilla
- LibreOffice
- LocalSend
- NetBird
- SoftDetective
- TightVNC
Questo contenuto è nascosto, ma senza JavaScript non puoi gestirlo correttamente. Passa con il mouse sopra a questo testo per visualizzarlo!
- Firefox
- FileZilla
- LibreOffice
- LocalSend
- NetBird
- SoftDetective
- TightVNC
I riferimenti all'uninstall di questi programmi sono però in HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable. " Mikko Hypponen
crazy.cat
Amministratore
Messaggi: 13558 Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Has thanked: 7 times
Been thanked: 97 times
Messaggio
da crazy.cat » lun mar 23, 2026 11:57 am
CUB3 ha scritto: lun mar 23, 2026 11:55 am
I riferimenti all'uninstall di questi programmi sono però in
HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Appena posso faccio una modifica allo script e poi ti chiederò di riprovare.
La prima legge della dietetica sembra essere: se il sapore è buono, a te fa male.
crazy.cat
Amministratore
Messaggi: 13558 Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Has thanked: 7 times
Been thanked: 97 times
Messaggio
da crazy.cat » lun mar 23, 2026 2:31 pm
CUB3 ha scritto: lun mar 23, 2026 11:55 am
I riferimenti all'uninstall di questi programmi sono però in
HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Puoi sostituire il punto 3 dello script con questo?
# 3. PROGRAMMI INSTALLATI
$Output += "<h2>Programmi Installati</h2>"
$UninstallKeys = @("HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*","HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*","HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*")
$Output += Get-ItemProperty $UninstallKeys -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -ne $null } |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Sort-Object DisplayName | ConvertTo-Html -Fragment
La prima legge della dietetica sembra essere: se il sapore è buono, a te fa male.
Zigul
VIP
Messaggi: 747 Iscritto il: dom ott 08, 2023 12:11 am
Has thanked: 53 times
Been thanked: 75 times
Messaggio
da Zigul » lun mar 23, 2026 3:04 pm
crazy.cat ha scritto: lun mar 23, 2026 11:43 am
anche se ci metto windows 11 in quella chiave di registro poi quando riapro il pc ritorna windows 10.
Pare che alcune parti di Windows 11 siano rimaste "dichiarate" come Windows 10 per motivi di retrocompatibilità, quindi alcuni comandi (come Get-ComputerInfo ) possono "mentire" nel risultato, così come lo user agent del browser risulta "Windows NT 10.0" anche se si usa Windows 11.
Senza modificare il registro, questi comandi rilevano, almeno nella mia VM, Windows 11 (Pro):
Codice: Seleziona tutto
(Get-ComputerInfo).OsName oppure Get-ComputerInfo OsName
Per le versioni e i dettagli
Codice: Seleziona tutto
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object DisplayVersion, CurrentBuildNumber, UBR
Special thanks to Grok , io mi ricordavo solo dello user agent .
I (pochi) programmi installati vengono rilevati correttamente (con il codice originale, senza aver sostituito il punto 3).
crazy.cat
Amministratore
Messaggi: 13558 Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Has thanked: 7 times
Been thanked: 97 times
Messaggio
da crazy.cat » lun mar 23, 2026 6:45 pm
Ho aggiornato gli script per la parte di versione di windows, ora dovrebbe essere più chiara.
La prima legge della dietetica sembra essere: se il sapore è buono, a te fa male.
CUB3
Moderatore
Messaggi: 4904 Iscritto il: lun gen 26, 2015 10:13 am
Has thanked: 59 times
Been thanked: 81 times
Messaggio
da CUB3 » mar mar 24, 2026 11:31 am
L'ultima versione dello script non genera errori, rileva tutti i programmi installati e la corretta versione di Windows intallata
"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable. " Mikko Hypponen
cippa1974
Livello: Scheda perforata (1/15)
Messaggi: 1 Iscritto il: gio dic 28, 2017 11:23 am
Messaggio
da cippa1974 » ven mar 27, 2026 11:37 am
Ciao ... bellissimo script
l'ho integrato con il punto 15: se puoi essere d'aiuto e modificato il path di salvataggio dato che non sempre d:\ è disponibile
cmq, grazie
ciao
Codice: Seleziona tutto
# 15. STATO ANTIVIRUS
$Output += "<h2>Antivirus - Stato Protezione</h2>"
try {
# Recupero informazioni tramite Windows Security Center
$AV = Get-CimInstance -Namespace "root/SecurityCenter2" -ClassName AntivirusProduct -ErrorAction SilentlyContinue
if ($AV) {
$AVStatus = $AV | ForEach-Object {
# Interpretazione dello stato (bitmask)
$state = switch ($_.productState) {
{$_ -band 0x10000} { "Aggiornato" }
default { "Non Aggiornato" }
}
# Stato protezione (ON/OFF)
$enabled = switch ($_.productState) {
{($_ -band 0x10)} { "Attivo" }
default { "Disattivato" }
}
[PSCustomObject]@{
NomeAV = $_.displayName
Stato = $enabled
Aggiornamento = $state
Percorso = $_.pathToSignedProductExe
}
}
$Output += $AVStatus | ConvertTo-Html -Fragment
}
else {
$Output += "<p>Nessun antivirus rilevato (o accesso negato).</p>"
}
}
catch {
$Output += "<p>Impossibile recuperare informazioni sull'antivirus.</p>"
}
crazy.cat
Amministratore
Messaggi: 13558 Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Has thanked: 7 times
Been thanked: 97 times
Messaggio
da crazy.cat » ven mar 27, 2026 1:34 pm
cippa1974 ha scritto: ven mar 27, 2026 11:37 am
Ciao ... bellissimo script
Grazie
Legge qualsiasi tipo di antivirus installato nel pc o solo defender?
Appena posso lo provo su un pc in ufficio.
Qualcosa non funziona nel mio pc, non legge i dati
Windows Defender Disattivato Non Aggiornato windowsdefender://
La prima legge della dietetica sembra essere: se il sapore è buono, a te fa male.
crazy.cat
Amministratore
Messaggi: 13558 Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Has thanked: 7 times
Been thanked: 97 times
Messaggio
da crazy.cat » dom mar 29, 2026 6:23 am
Almeno per windows defender una versione più corretta dello script è questa
# 15. STATO ANTIVIRUS CON VERSIONE MOTORE
$Output += "<h2>Antivirus - Stato e Versioni</h2>"
try {
$AVProducts = Get-CimInstance -Namespace "root/SecurityCenter2" -ClassName AntivirusProduct -ErrorAction SilentlyContinue
if ($AVProducts) {
$AVStatusList = foreach ($AV in $AVProducts) {
# Decodifica stato (Bitmask)
$hexState = "0x{0:x}" -f $AV.productState
$enabled = if ($hexState.Substring(3, 2) -match "10|11") { "Attivo" } else { "Disattivato" }
$update = if ($hexState.Substring(5, 2) -eq "00") { "Aggiornato" } else { "Non Aggiornato" }
# Recupero Versione Motore/Prodotto dal File Exe
$engineVersion = "N/D"
if ($AV.pathToSignedProductExe) {
try {
# Espande variabili d'ambiente se presenti nel percorso (es. %ProgramFiles%)
$fullPath = [System.Environment]::ExpandEnvironmentVariables($AV.pathToSignedProductExe)
if (Test-Path $fullPath) {
$fileInfo = Get-ItemProperty -Path $fullPath
$engineVersion = $fileInfo.VersionInfo.ProductVersion
}
} catch { $engineVersion = "Errore Lettura" }
}
# Caso specifico per Windows Defender (più dettagliato)
if ($AV.displayName -eq "Windows Defender") {
$defStatus = Get-MpComputerStatus -ErrorAction SilentlyContinue
if ($defStatus) { $engineVersion = $defStatus.AMEngineVersion }
}
[PSCustomObject]@{
NomeAV = $AV.displayName
Stato = $enabled
Aggiornamento = $update
VersioneMotore = $engineVersion
UltimoCheck = $AV.timestamp
}
}
$Output += $AVStatusList | ConvertTo-Html -Fragment
} else {
$Output += "<p>Nessun antivirus rilevato.</p>"
}
} catch {
$Output += "<p>Errore critico: $($_.Exception.Message)</p>"
}
Questo contenuto è nascosto, ma senza JavaScript non puoi gestirlo correttamente. Passa con il mouse sopra a questo testo per visualizzarlo!
# 15. STATO ANTIVIRUS CON VERSIONE MOTORE
$Output += "<h2>Antivirus - Stato e Versioni</h2>"
try {
$AVProducts = Get-CimInstance -Namespace "root/SecurityCenter2" -ClassName AntivirusProduct -ErrorAction SilentlyContinue
if ($AVProducts) {
$AVStatusList = foreach ($AV in $AVProducts) {
# Decodifica stato (Bitmask)
$hexState = "0x{0:x}" -f $AV.productState
$enabled = if ($hexState.Substring(3, 2) -match "10|11") { "Attivo" } else { "Disattivato" }
$update = if ($hexState.Substring(5, 2) -eq "00") { "Aggiornato" } else { "Non Aggiornato" }
# Recupero Versione Motore/Prodotto dal File Exe
$engineVersion = "N/D"
if ($AV.pathToSignedProductExe) {
try {
# Espande variabili d'ambiente se presenti nel percorso (es. %ProgramFiles%)
$fullPath = [System.Environment]::ExpandEnvironmentVariables($AV.pathToSignedProductExe)
if (Test-Path $fullPath) {
$fileInfo = Get-ItemProperty -Path $fullPath
$engineVersion = $fileInfo.VersionInfo.ProductVersion
}
} catch { $engineVersion = "Errore Lettura" }
}
# Caso specifico per Windows Defender (più dettagliato)
if ($AV.displayName -eq "Windows Defender") {
$defStatus = Get-MpComputerStatus -ErrorAction SilentlyContinue
if ($defStatus) { $engineVersion = $defStatus.AMEngineVersion }
}
[PSCustomObject]@{
NomeAV = $AV.displayName
Stato = $enabled
Aggiornamento = $update
VersioneMotore = $engineVersion
UltimoCheck = $AV.timestamp
}
}
$Output += $AVStatusList | ConvertTo-Html -Fragment
} else {
$Output += "<p>Nessun antivirus rilevato.</p>"
}
} catch {
$Output += "<p>Errore critico: $($_.Exception.Message)</p>"
}
Non ho modo però di provarla con antivirus di terze parti se può funzionare con tutti. (avast lo ha letto e bene)
La prima legge della dietetica sembra essere: se il sapore è buono, a te fa male.