You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本需求:查找首个未使用USB端口并添加打印机

Solution: Automatically Find and Use the First Available USB Printer Port

Got it, let's fix this script so it dynamically locates the first unused USB printer port instead of relying on the hardcoded USB001. Here's the revised script with clear explanations:

# Step 1: Get all existing USB printer ports and extract their numeric suffixes
$existingUsbPorts = Get-PrinterPort | Where-Object { $_.PrinterPortType -eq 'USB' } | ForEach-Object {
    # Pull the 3-digit number from port names like "USB001"
    if ($_.Name -match 'USB(\d{3})') {
        [int]$matches[1]
    }
} | Sort-Object

# Step 2: Find the first available USB port number
$availablePortNumber = 1
foreach ($num in $existingUsbPorts) {
    if ($num -gt $availablePortNumber) {
        break
    }
    $availablePortNumber = $num + 1
}
# Format the number to match Windows' standard USB port naming (e.g., 1 → USB001)
$availablePortName = "USB{0:D3}" -f $availablePortNumber

# Step 3: Create the port if it doesn't already exist
$port = Get-PrinterPort -Name $availablePortName -ErrorAction SilentlyContinue
if (-not $port) {
    $port = Add-PrinterPort -Name $availablePortName -PrinterHostAddress "\localhost" -PrinterPortType USB -ErrorAction Stop
    Write-Verbose "Created new USB printer port: $availablePortName"
} else {
    Write-Verbose "Using existing available USB printer port: $availablePortName"
}

# Step 4: Configure the printer with the found/created port
$printerParams = @{
    Name = "HP LaserJet MFP M232sdw"
    DriverName = "HP LaserJet MFP M232-M237 PCLm-S"
    Port = $port.Name
    Verbose = $true
}

# Uncomment the line below to actually add the printer (your original script defined params but didn't run the add)
# Add-Printer @printerParams -ErrorAction SilentlyContinue

Key Logic Breakdown:

  • Extract Existing USB Ports: We filter all system printer ports to only USB types, then extract and sort the numeric suffixes from their names. This lets us see which port numbers are already taken.
  • Find First Available Port: We start checking from 1 and increment until we hit a number that's missing from the existing port list. This handles edge cases where earlier ports might have been deleted (e.g., if USB001 was removed but USB002 exists, we'll reuse USB001).
  • Standard Port Naming: The USB{0:D3} format ensures we follow Windows' required 3-digit naming convention for USB printer ports.
  • Robust Port Creation: We verify if the port exists first, and only create it if it's missing. Adding -ErrorAction Stop helps catch any unexpected issues during port creation.

Quick Notes:

  • If no USB ports exist on the system, the script will default to creating USB001.
  • Double-check that the DriverName matches exactly what's installed on your machine (you can confirm this with Get-PrinterDriver).
  • Uncomment the final Add-Printer line when you're ready to actually deploy the printer with the dynamic port.

内容的提问来源于stack exchange,提问作者ITnoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:16:33