我正尝试将本地计算机上的打印机从旧打印服务器移动到新打印服务器。如果我保持打印机名称与我的代码相同。但是,如果我想在重新命名打印机的同时尝试重置objItem.Name的值。在下面的代码中,我如何在我的select Case语句中重命名objItem.Name?如何在VBScript中重命名objItem.Name
On Error Resume Next
Dim strComputer, DefaultPTR
Dim objWMIService, colItems, WshNetwork
Dim LogFile
Dim wshShell
CONST ForWriting = 2
CONST ForAppending = 8
Set wshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
UserProf = wshShell.ExpandEnvironmentStrings("%USERPROFILE%")
LogFile = UserProf & "\MovePtrsToNewPrintServerName.txt"
If (objfso.FileExists(UserProf & "\MovePtrsToNewPrintServerName.txt")) Then
'WScript.Echo("File exists!")
WScript.Quit()
Else
Set objFile = objFSO.CreateTextFile(LogFile, ForWriting)
End If
strComputer = "."
DefaultPTR=0
Set WshNetwork = CreateObject("WScript.Network")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
For Each objItem in colItems
If UCase(Left(objItem.Name,21)) = "\\OldPrintServerName\" Then
If objItem.Attributes And 4 Then
DefaultPTR = 1
End If
objItem.Name.Delete_
Select Case UCase(objItem.Name)
Case "\\OldPrintServerName\HP4000"
objItem.Name.Rename "\\OldPrintServerName\HPP3005" '<--- I know this doesn't work so
' how can I rename objItem.Name to
' the new printer name?
End Select
WshNetwork.AddWindowsPrinterConnection "\\NewPrintServerName\" & Right(objItem.Name,Len
(objItem.Name) - 9)
If Not Err.Number = 0 then
objFile.WriteLine "Problem with " & Right(objItem.Name,Len(objItem.Name) - 21)
Err.Clear
End if
If DefaultPTR = 1 then
WshNetwork.SetDefaultPrinter "\\NewPrintServerName\" & Right(objItem.Name,Len
(objItem.Name) - 21)
DefaultPTR = 0
End If
End If
Next
objFile.WriteLine "Printers have been moved from OldPrintServerName to NewPrintServerName"
的'Win32_Printer'类有一个[RenamePrinter](http://msdn.microsoft.com/en-us/library/aa393050%28v=vs.85%29.aspx)函数。 'objItem.RenamePrinter“”'应该做的伎俩。 –
Bond
不幸的是,这并没有帮助。我不只是试图重新命名一台打印机。我试图将几个移动到一个新的打印服务器,并在同一时间重新命名一些。我真的想改变objItem.Name的值,所以其余的代码将工作。 – user3473084