Add .gitignore, config_template.json, readme.md, and reload_xmos_device.ps1 files
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
device_list.csv
|
||||
config.json
|
||||
7
config_template.json
Normal file
7
config_template.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"devManViewPath": "D:\\MyWorkspace\\tools\\devmanview-x64\\DevManView.exe",
|
||||
"deviceListFile": ".\\device_list.csv",
|
||||
"pattern": "USB Audio",
|
||||
"auditionPath": "D:\\Program Files\\Adobe Audition 2020\\Adobe Audition.exe",
|
||||
"audacityPath": "D:\\Program Files\\Audacity\\Audacity.exe"
|
||||
}
|
||||
30
readme.md
Normal file
30
readme.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# 重新加载XMOS设备
|
||||
|
||||
这个脚本,`reload_xmos_device.ps1`,用于通过卸载和重新安装来重新加载XMOS设备。它还会重启Adobe Audition和Audacity。
|
||||
|
||||
## 前提条件
|
||||
|
||||
- [DevManView](https://www.nirsoft.net/utils/usb_devices_view.html) - Windows标准设备管理器的免费替代品。
|
||||
|
||||
## 配置
|
||||
|
||||
脚本从`config.json`文件读取其配置。以下是可用的配置选项:
|
||||
|
||||
- `devManViewPath` (字符串): DevManView可执行文件的路径。
|
||||
- `deviceListFile` (字符串): 设备列表文件的路径。
|
||||
- `pattern` (字符串): 用于过滤设备的模式。
|
||||
- `auditionPath` (字符串): Adobe Audition可执行文件的路径。
|
||||
- `audacityPath` (字符串): Audacity可执行文件的路径。
|
||||
|
||||
## 使用方法
|
||||
|
||||
1. 确保你已经安装了前提条件。
|
||||
2. 根据你的路径和需要在根目录下新建`config.json`文件。
|
||||
3. 以管理员身份运行`reload_xmos_device.ps1`脚本。
|
||||
4. 脚本将生成一个设备列表文件,根据指定的模式过滤设备,卸载过滤后的设备,并重启Adobe Audition和Audacity。
|
||||
|
||||
注意:脚本需要管理员权限才能卸载设备。
|
||||
|
||||
## 示例配置
|
||||
|
||||
参见`config_template.json`文件。
|
||||
49
reload_xmos_device.ps1
Normal file
49
reload_xmos_device.ps1
Normal file
@@ -0,0 +1,49 @@
|
||||
function RunAsAdmin($scriptPath) {
|
||||
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||
$principal = New-Object Security.Principal.WindowsPrincipal($identity)
|
||||
$admin = [Security.Principal.WindowsBuiltInRole]::Administrator
|
||||
if (!$principal.IsInRole($admin)) {
|
||||
$arguments = "& '" + $scriptPath + "'"
|
||||
Start-Process powershell -Verb runAs -ArgumentList $arguments
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
function GenerateDeviceList($devManViewPath, $outputFile) {
|
||||
& $devManViewPath /scomma $outputFile
|
||||
Write-Host "Created $outputFile"
|
||||
}
|
||||
|
||||
function FilterDevices($deviceListFile, $pattern) {
|
||||
$deviceList = Import-Csv -Path $deviceListFile -Encoding UTF8 -Header "Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17", "Column18", "Column19", "Column20", "Column21", "Column22", "Column23", "Column24", "Column25", "Column26", "Column27"
|
||||
$deviceList | Select-Object -ExpandProperty Column1 | Where-Object { $_ -match $pattern } | Sort-Object | Get-Unique
|
||||
}
|
||||
|
||||
function UninstallDevices($devManViewPath, $devices) {
|
||||
foreach ($device in $devices) {
|
||||
Write-Host "Uninstalling $device"
|
||||
& $devManViewPath /uninstall "$device"
|
||||
}
|
||||
}
|
||||
|
||||
# 读取配置文件
|
||||
$config = Get-Content -Path .\config.json | ConvertFrom-Json
|
||||
|
||||
# 配置选项,当选项不起作用时,检查DevManView.cfg中是否配置了filter
|
||||
$scriptPath = $myinvocation.mycommand.definition
|
||||
$devManViewPath = $config.devManViewPath
|
||||
$deviceListFile = $config.deviceListFile
|
||||
$pattern = $config.pattern
|
||||
|
||||
# 执行
|
||||
RunAsAdmin $scriptPath
|
||||
GenerateDeviceList $devManViewPath $deviceListFile
|
||||
$devices = FilterDevices $deviceListFile $pattern
|
||||
UninstallDevices $devManViewPath $devices
|
||||
Remove-Item $deviceListFile
|
||||
|
||||
# 重启 Adobe Audition and Audacity
|
||||
Stop-Process -Name "Audition" -Force -ErrorAction SilentlyContinue
|
||||
Start-Process -FilePath $config.auditionPath
|
||||
Stop-Process -Name "Audacity" -Force -ErrorAction SilentlyContinue
|
||||
Start-Process -FilePath $config.audacityPath
|
||||
Reference in New Issue
Block a user