vb.net - 用于映射打印机的 VBS 脚本:没有 .NET 3.5 框架怎么办?
问题描述
我们的打印机由具有(几乎)与打印机相同名称的计算机组分配(例如“prn-accounting”等)。该脚本查找计算机所在的广告打印机组,删除所有网络打印机,并仅分配计算机所在组建议的打印机。
它正在工作,但问题是它需要 .NET 3.5 框架才能运行,因为我猜它使用了 ArrayList。
错误消息:“第 2 行中的 Windows 脚本主机错误 0x80131700”和 .NET 3.5 安装过程开始...
我的问题是:如果没有 .NET 3.5,它如何工作?有没有办法让它改用.NET 4.8?或者使用数组而不是数组列表?但是怎么办?...
Dim WSHShell, objNET, objSysInfo, objUser, strUserDN, strGroups, Group, GroupName, DruckerListe, i
Set DruckerListe = CreateObject("System.Collections.ArrayList")
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set objNET = WScript.CreateObject("WScript.Network")
Set objSysInfo = WScript.CreateObject("ADSystemInfo")
strComputerDN = objSysInfo.ComputerName
Set objComputer = GetObject("LDAP://" & strComputerDN)
strGroups = objComputer.GetEx("memberOf")
For Each gruppe in strGroups
Set ThisGroup = GetObject("LDAP://" & gruppe)
GroupName = ThisGroup.CN
If Left(GroupName,3) = "prn" Or Left(GroupName,3) = "mfc" Or Left(GroupName,3) = "cop" Or Right(GroupName,7) = "armband" Or Left(GroupName,3) = "pdf" Then
DruckerListe.add "\\srv-print01\" & GroupName
End If
Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set networkPrinters = objWMIService.ExecQuery("Select * From Win32_Printer Where Network = TRUE")
For Each networkPrinter in networkPrinters
networkPrinter.Delete_
Next
Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")
For Each drucker in DruckerListe
If Right(drucker, 10) = "-nodefault" Then
objNetwork.AddWindowsPrinterConnection Left(drucker,Len(drucker)-10)
ElseIF Left(drucker, 7) = "armband" Then
objNetwork.AddWindowsPrinterConnection drucker
Else
objNetwork.AddWindowsPrinterConnection drucker
objNetwork.SetDefaultPrinter drucker
End If
Next
Set objNetwork = Nothing
解决方案
问题是 .Net 3.5 中定义的ArrayList对象
Set DruckerListe = CreateObject("System.Collections.ArrayList")
如果将ArrayList替换为常规数组或其他类型的集合,则不需要 .Net 3.5(除非其他类之一也在 .Net 3.5 中定义)
推荐阅读
- xamarin.forms - xamarin.forms 未显示 ToolbarItem
- angularjs - 切换按钮单击在angularjs中没有响应
- python - Pandas 将颜色填充到列标题或整个数据框
- macos - 在自制公式中创建别名
- python - matplotlib 中的逐步面积图
- maven - 如何避免 Jenkins 代理下载每个构建的依赖项?
- flutter - Flutter:Freezed 和 json_serializable 包的编译问题
- ios - 如何在列表项周围创建圆角的表格视图
- spring-boot - 基于 Kubernetes 入口路径的路由未按预期工作
- django - 如何在 Django 中为完整性测试编写正确的代码?