如何将实现网络驱动器映射与打印机批量添加的VBScript脚本转换为PowerShell脚本?
VBScript 到 PowerShell 的转换脚本
下面是完全复刻原VBScript功能的PowerShell版本,我给每部分都加了注释,方便你对应原逻辑理解:
# 对应原VBS的on error resume next,让脚本遇到错误时继续执行 $ErrorActionPreference = 'SilentlyContinue' # ---------------------- 映射网络驱动器部分 ---------------------- # 用哈希表整理驱动器映射规则,比原VBS的重复代码更简洁易维护 $driveMappings = @{ 'Z' = '\\ptfg-fs-005p\204ISShare' 'Y' = '\\108arw-fs-02\global' 'K' = '\\108arw-fs-02\apps' } foreach ($drive in $driveMappings.GetEnumerator()) { # 检查目标驱动器是否已存在 if (-not (Get-PSDrive -Name $drive.Key -ErrorAction SilentlyContinue)) { # 映射网络驱动器,-Persist参数会让驱动器在重启后保留,不需要持久化的话可以去掉这个参数 New-PSDrive -Name $drive.Key -PSProvider FileSystem -Root $drive.Value -Persist | Out-Null } } # ---------------------- 映射网络打印机部分 ---------------------- $printerBasePath = '\\ptfg-mp-001v\204isispcl000' # 对应原VBS的数组,存储需要拼接的打印机后缀数字 $printerSuffixes = @('3','4','5','6','7','8') foreach ($suffix in $printerSuffixes) { $fullPrinterPath = $printerBasePath + $suffix # 添加打印机连接 Add-Printer -ConnectionName $fullPrinterPath }
额外说明:
- 我把原VBS里重复的驱动器检查逻辑改成了哈希表循环,后续要新增驱动器映射的话,直接在
$driveMappings里加键值对就行,不用重复写判断代码 - 如果不需要驱动器持久化(重启后自动消失),请去掉
New-PSDrive里的-Persist参数 Add-Printer命令需要PowerShell 5.1及以上版本,若你用的是更老旧的PowerShell版本,可以替换成兼容命令:rundll32 printui.dll,PrintUIEntry /in /n"$fullPrinterPath"
内容的提问来源于stack exchange,提问作者JohnWick555
相关产品推荐
相关产品推荐

