|
|
|
|
Strumenti |
08-12-2023, 11:57 | #1 |
Member
Iscritto dal: Jul 2012
Messaggi: 126
|
[batch] Comando per distinguere HDD da SSD
Ciao.
Comoscete un comando da prompt (cmd.exe) per distinguere il tipo di disco installato sul PC: HDD o SSD? Ho provato con Codice:
WMIC logicaldisk get DriveType Codice:
WMIC DISKDRIVE get MediaType Qualche idea? Grazie. P.S. Il comando da PowerShell Get-PhysicalDisk restituisce un messaggio di errore: Codice:
Termine 'Get-PhysicalDisk' non riconosciuto come nome di cmdlet, funzione, programma eseguibile o file script. Controll are l'ortografia del nome o verificare che il percorso sia incluso e corretto, quindi riprovare. In riga:1 car:17 + Get-PhysicalDisk <<<< + CategoryInfo : ObjectNotFound: (Get-PhysicalDisk:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Ultima modifica di 23Andrea : 08-12-2023 alle 12:11. |
10-12-2023, 09:12 | #2 |
Senior Member
Iscritto dal: May 2005
Messaggi: 8693
|
Che OS usi? Get-PhysicalDisk è per Windows 8 e superiori
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . |
26-12-2023, 14:48 | #3 | |
Member
Iscritto dal: Jul 2012
Messaggi: 126
|
Quote:
Ho installato Microsoft .NET Framework 3.0 (KB2506143) e ora la mia Powershell è alla versione Codice:
Name Value ---- ----- PSVersion 3.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.18034 BuildVersion 6.2.9200.16398 PSCompatibleVersions {1.0, 2.0, 3.0} PSRemotingProtocolVersion 2.2 C'è da attivare/configurare/smanettare qualcosa? Grazie. |
|
26-12-2023, 16:54 | #4 |
Senior Member
Iscritto dal: May 2005
Messaggi: 8693
|
Ripeto, non è disponibile per Windows 7, solo Windows 8 e superiori.
Puoi provare una cosa del genere: Codice:
Get-WmiObject Win32_DiskDrive | Where-Object { $_.model -match "SSD" }
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . |
27-12-2023, 15:26 | #5 | ||
Member
Iscritto dal: Jul 2012
Messaggi: 126
|
Quote:
https://devblogs.microsoft.com/scrip...-in-windows-7/ non c'è speranza? Quote:
Codice:
PS> Get-WmiObject Win32_DiskDrive Partitions : 4 DeviceID : \\.\PHYSICALDRIVE0 Model : WD WD10JPCX-24UE4T0 SCSI Disk Device Size : 1000202273280 Caption : WD WD10JPCX-24UE4T0 SCSI Disk Device Purtroppo, non sempre il modello contiene la stringa "SSD", anche se il PC monta una memoria a stato solido. |
||
27-12-2023, 15:51 | #6 |
Member
Iscritto dal: Jul 2012
Messaggi: 126
|
Credo che il comando che cerco (Get-PhysicalDisk) sia compreso nel modulo "Storage"
https://learn.microsoft.com/en-us/po...sserver2022-ps che non c'è sul mio PC Codice:
PS > Get-Module -ListAvailable Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules ModuleType Name ExportedCommands ---------- ---- ---------------- Manifest AppLocker {Set-AppLockerPolicy, Get-AppLockerPolicy, Test-AppLockerPolicy, Get-... Manifest BitsTransfer {Add-BitsFile, Remove-BitsTransfer, Complete-BitsTransfer, Get-BitsTr... Manifest CimCmdlets {Get-CimAssociatedInstance, Get-CimClass, Get-CimInstance, Get-CimSes... Script ISE {New-IseSnippet, Import-IseSnippet, Get-IseSnippet} Manifest Microsoft.PowerShell.Diagnostics {Get-WinEvent, Get-Counter, Import-Counter, Export-Counter...} Manifest Microsoft.PowerShell.Host {Start-Transcript, Stop-Transcript} Manifest Microsoft.PowerShell.Management {Add-Content, Clear-Content, Clear-ItemProperty, Join-Path...} Manifest Microsoft.PowerShell.Security {Get-Acl, Set-Acl, Get-PfxCertificate, Get-Credential...} Manifest Microsoft.PowerShell.Utility {Format-List, Format-Custom, Format-Table, Format-Wide...} Manifest Microsoft.WSMan.Management {Disable-WSManCredSSP, Enable-WSManCredSSP, Get-WSManCredSSP, Set-WSM... Script PSDiagnostics {Disable-PSTrace, Disable-PSWSManCombinedTrace, Disable-WSManTrace, E... Binary PSScheduledJob {New-JobTrigger, Add-JobTrigger, Remove-JobTrigger, Get-JobTrigger...} Manifest PSWorkflow {New-PSWorkflowExecutionOption, New-PSWorkflowSession, nwsn} Manifest PSWorkflowUtility Invoke-AsWorkflow Manifest TroubleshootingPack {Get-TroubleshootingPack, Invoke-TroubleshootingPack} |
28-12-2023, 10:39 | #7 |
Senior Member
Iscritto dal: May 2005
Messaggi: 8693
|
Ti va bene anche un eseguibile a cui passi l'unità e ti risponde se è SSD o HDD?
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . |
28-12-2023, 15:27 | #8 |
Member
Iscritto dal: Jul 2012
Messaggi: 126
|
Può darsi ...
|
06-01-2024, 21:14 | #9 | ||
Senior Member
Iscritto dal: May 2005
Messaggi: 8693
|
isSSD
Password:
Utilizzo da CMD: Codice:
isSSD.exe C:\
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . |
||
08-01-2024, 19:10 | #10 |
Senior Member
Iscritto dal: May 2008
Messaggi: 648
|
Sono metodi non infallibili, anche per Windows 8 e superiori.
Ad es. il mio PC ha un SSD interno e 2 dischi meccanici USB +chiavetta USB: Codice:
PS C:\> Get-PhysicalDisk | select DeviceId,FriendlyName,BusType,MediaType DeviceId FriendlyName BusType MediaType -------- ------------ ------- --------- 3 TOSHIBA External USB 3.0 USB Unspecified 0 Samsung SSD 850 PRO 256GB SATA SSD 1 WD My Book 25EE USB HDD 2 Samsung Flash Drive USB Unspecified Idem l'eseguibile isSSD qua sopra, che non restituisce nulla ("errore") per il Toshiba (mostra il tipo corretto solo per gli altri due, ovvio non la chiavetta flash). Tuttavia il deframmentatore di Windows 10, per esempio, non sbaglia ad identificare il tipo di disco: |
08-01-2024, 23:05 | #11 |
Senior Member
Iscritto dal: May 2005
Messaggi: 8693
|
isSSD non ti restituisce nulla perché è un'unità esterna USB e non l'ho previsto, è un codice fatto in 5 minuti e non si parlava di dischi esterni
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . |
16-01-2024, 15:22 | #12 |
Senior Member
Iscritto dal: May 2008
Messaggi: 648
|
Si può comunque provare a fare meglio, pur rimanendo in ambito AutoIt con cui è stato scritto isSSD.
Non ci sono troppe preclusioni in AutoIt tra dischi interni ed esterni (funzione DriveGetType). Perciò propongo anche il mio script: Codice:
; MyIsSsd.au3 ; Compilare con: Aut2exe /in MyIsSsd.au3 #include <AutoItConstants.au3> ; Check command line params If $CmdLine[0] <> 1 Then Exit 3 EndIf ; Drive letter to check is the first parameter $DriveLetter = $CmdLine[1] ; Get drive type and verify it exists $type = DriveGetType($DriveLetter, $DT_DRIVETYPE) If @error Then Exit 2 Else ; Get SSD status (blank return is non-SSD) $ssd = DriveGetType($DriveLetter, $DT_SSDSTATUS) EndIf ; Return 1 if it is an SSD, otherwise 0 If $ssd = "SSD" Then Exit 1 Else Exit 0 EndIf https://www.autoitconsulting.com/sit...sing-a-script/ Una volta ottenuto MyIsSsd.exe ho preparato un batch di test (TestMyIsSsd.cmd): Codice:
@echo off MyIsSsd %1 %2 if errorlevel 3 ( echo Numero errato di parametri della linea di comando. ) else if errorlevel 2 ( echo Errore nel rilevamento del disco %1 ) else if errorlevel 1 ( echo Disco %1 rilevato come SSD. ) else ( echo Disco %1 rilevato come non-SSD. ) Ho quindi fatto un test su un mio PC con 6 dischi disponibili, tra interni ed esterni: Codice:
c:\TEMP>for %d in (C: D: E: F: H: J: K:) do TestMyIsSsd %d c:\TEMP>TestMyIsSsd C: Disco C: rilevato come SSD. c:\TEMP>TestMyIsSsd D: Disco D: rilevato come non-SSD. c:\TEMP>TestMyIsSsd E: Disco E: rilevato come non-SSD. c:\TEMP>TestMyIsSsd F: Disco F: rilevato come SSD. c:\TEMP>TestMyIsSsd H: Disco H: rilevato come non-SSD. c:\TEMP>TestMyIsSsd J: Errore nel rilevamento del disco J: c:\TEMP>TestMyIsSsd K: Disco K: rilevato come non-SSD. C: è un SSD Samsung montato internamente su bus SATA; D: è una pendrive USB; E: è un masterizzatore CD/DVD/BD esterno USB; F: è un SSD esterno USB (Samsung T7 Shield); H: è un disco meccanico da 3.5" esterno USB (WD My Book); J: non esiste proprio.... K: è un disco meccanico da 2.5" esterno USB (Toshiba). Non posso certo dire che sia universale o infallibile ma, almeno per i dischi che ho a disposizione al momento, sembra rispondere ai requisiti richiesti compresi quelli iniziali dell'OP. Da qui si può eventualmente prendere spunto per ampliare, migliorare e quant'altro di proprio gusto. |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:21.