Не понимаю, что я делаю не так, на выходе всегда весь скрипт, с ошибкой Invalid parameter to setlocal
! Возможно, это просто глупая ошибка, но она сводит меня с ума.
SETLOCAL ENABLEDELAYEDEXPANSION
REM Obtain username of logged in user
SET loggedinuser=%USERNAME%
REM Create temporary vbscript to obtain user OU
echo Const ADS_SCOPE_SUBTREE = 2 >temp.vbs
echo. >>temp.vbs
echo Set objConnection = CreateObject("ADODB.Connection") >>temp.vbs
echo Set objCommand = CreateObject("ADODB.Command") >>temp.vbs
echo objConnection.Provider = "ADsDSOObject" >>temp.vbs
echo objConnection.Open "Active Directory Provider" >>temp.vbs
echo Set objCommand.ActiveConnection = objConnection >>temp.vbs
echo. >>temp.vbs
echo objCommand.Properties("Page Size") = 1000 >>temp.vbs
echo objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE >>temp.vbs
echo. >>temp.vbs
echo objCommand.CommandText = _ >>temp.vbs
echo ^"SELECT distinguishedName FROM ^'LDAP://dc=test,dc=com^' ^" ^& _ >>temp.vbs
echo "WHERE objectCategory='user' " ^& _ >>temp.vbs
echo "AND sAMAccountName='!loggedinuser!'" >>temp.vbs
echo Set objRecordSet = objCommand.Execute >>temp.vbs
echo. >>temp.vbs
echo objRecordSet.MoveFirst >>temp.vbs
echo Do Until objRecordSet.EOF >>temp.vbs
echo strDN = objRecordSet.Fields("distinguishedName").Value >>temp.vbs
echo arrPath = Split(strDN, ",") >>temp.vbs
echo intLength = Len(arrPath(1)) >>temp.vbs
echo intNameLength = intLength - 3 >>temp.vbs
echo Wscript.Echo Right(arrPath(1), intNameLength) >>temp.vbs
echo objRecordSet.MoveNext >>temp.vbs
echo Loop >>temp.vbs
REM Save backup of old printer list, just in case
echo Creating a backup list of current printers, please wait...
wmic printer list brief /format:csv > \\networkshare\userfiles\!loggedinuser!\oldprinterlist.txt
echo Backup list completed.
REM Set the OU variable by running the vbscript
echo Discovering your department...
FOR /F "delims=" %%a in ('cscript.exe /nologo temp.vbs') do @set OU=%%a
echo Adding printers for %OU%
REM Perform new printer install based on OU
if %OU%==MIS (
set printer1=Printer_1_Yo
set printer2=Printer_2_Yo
set printer3=Printerwmic printer where
Yo
echo Adding %printer1%, please wait...
wmic printer call addprinterconnection \\newprintserver\%printer1%
echo %printer1% added. Adding %printer2%, please wait...
wmic printer call addprinterconnection \\newprintserver\%printer2%
echo %printer2% added. Adding %printer3%, please wait...
wmic printer call addprinterconnection \\newprintserver\%printer3%
echo %printer3% added. All printers are ready to use!
)
REM Delete printers that were on job
echo Deleting old printers from testserver, please wait...
wmic printer where servername=\\\\testserver delete
echo Deletion complete.
echo. If you would like to add more printers, please visit the Printers page on the intranet.
echo. Press any key to close this window.
pause>temp.txt
del temp.txt
del temp.vbs
После дальнейшего тестирования кажется, что строка wmic printer where
работает неправильно, и я скоро это исправлю (предложения приветствуются)... но является ли это причиной развала всего скрипта? Я знаю, что часть vbscript немного странная, но я не думаю, что это проблема. Пожалуйста, поправьте меня, если я ошибаюсь!
wmic printer get ServerName
? - person npocmaka   schedule 24.05.2013\\oldserver
\\oldserver
\\oldserver
\\newserver
Все разделены разрывом строки. - person EpicCyndaquil   schedule 24.05.2013wmic printer where servername=\\server list brief
выводит ноду (моя локальная машина) а потом выдает ошибку - Invalid query. - person EpicCyndaquil   schedule 24.05.2013like
без косой черты:where "servername like someserver"
- person npocmaka   schedule 24.05.2013"where servername like server"
,"where servername like \\server"
и"where servername=\\server"
. Я даже попробовал это с четырьмя косыми чертами, на всякий случай. У моего пользователя на сервере три принтера, поэтому я не уверен, в чем проблема. - person EpicCyndaquil   schedule 24.05.2013where
находится вне кавычек, я снова получаю ошибку Invalid query. - person EpicCyndaquil   schedule 24.05.2013where "servername like 'someServer'"
- person npocmaka   schedule 24.05.2013