我正在尝试以安全的方式重新启用 USB 自动播放,方法是在我使用的每台计算机上安装一个程序,以便在我插入特定 USB 驱动器时运行我的启动器(在本例中为PStart)。我用来启用此功能的工具 - AutoRunGuard - 需要我正在使用的 USB 驱动器的序列号。我不知道在 Windows 中在哪里可以找到它。理想情况下,我不需要安装和运行单独的程序来完成这个(看似)简单的任务。
由于这是一个非常简单的问题,如果您还告诉我如何在 Linux 中发现它,则会加分。
我需要采取哪些步骤来检索 USB 驱动器的序列号?
更新:
以防万一人们来这里寻找 AutoRunGuard 的答案,我发现他们不需要 USB 设备序列号,而是卷序列号。可以通过进入命令行、导航到驱动器并执行dir
. 卷序列号位于前两行 - 使用它而不使用破折号。
这是一个 PowerShell 解决方案,它将为您提供运行它的系统上安装的所有“ USB 大容量存储设备”的序列号。它使用Get-CIMInstance查询Win32_PnPSignedDriver 类,以通过过滤、循环、设置几个变量、使用方法等来获取属性值。
在下面的 PowerShell 脚本中,我留下了一些注释掉的逻辑和注释,以便在PowerShell 3.0 以下版本的系统上使用旧版Get-WMIObject cmdlet 运行。
$DevId = (((Get-CimInstance -Class win32_PnPSignedDriver) | ?{($_.Description -like '*mass*')}).DeviceID);
$DevSerial = @($DevId | %{$_.Split('\')[2]});
$DevSerial
##### // Everything below is commented out with comments for each section \\ #####
## -- See everything or the selected properties per above
#((Get-CimInstance -Class win32_PnPSignedDriver) | ?{($_.Description -like '*mass*')}) |
#Select Description, DeviceClass, DeviceID, Manufacturer
## -- Correlated legacy PS code older than PowerShell version 3
#$DevId = ((Get-WmiObject Win32_USBControllerDevice | %{[wmi]($_.Dependent)} | ?{($_.Description -like '*mass*')}).DeviceID);
#$DevSerial = @($DevId | %{$_.Split('\')[2]});
#$DevSerial
## -- See everything or selected properties per above legacy PS code
#Get-WmiObject Win32_USBControllerDevice | %{[wmi]($_.Dependent)} | ?{($_.Description -like '*mass*')} |
#Select Description, DeviceID, Manufacturer, Service
Run Code Online (Sandbox Code Playgroud)
Foreach-Object 的标准别名:“
%
”符号,ForEach
'
?
' 符号和Where 都是Where-Object 的别名。如果您明确想要运行Where-Object命令,请运行Where-object或“?
”
归档时间: |
|
查看次数: |
141083 次 |
最近记录: |