![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Экранизация кавычек в передаваемом аргументе в скрипт |
|
VBS/WSH/JS - [решено] Экранизация кавычек в передаваемом аргументе в скрипт
|
Новый участник Сообщения: 44 |
Здравствуйте! Вот такой вот скрипт, призван вызывать из контекстного меню оснастки AD "пользователи и компьютеры" программу для удаленного подключение к компьютеру пользователя, но в передаваемом аргументе есть кавычки, которые в AD экранируются с помощью символа \". А в vbs, это вызывает проблемы (
Подскажите как в этой ситуации выкрутится. On Error Resume Next Set WshShell = CreateObject("WScript.Shell") set fs=createobject("Scripting.FileSystemObject") Dim CompName Dim RunCMD Dim FilePath Set objUser = GetObject(Wscript.arguments.Item(0)) CompName = objUser.Get ("wWWHomePage") If CompName = "" Then WScript.Echo "CompName= " & Wscript.arguments.Item(0) If CompName = "" Then WScript.quit If MsgBox ("Подключиться к компьютеру " & CompName & "?",vbOKCancel+vbQuestion,"Серьезно?") = vbCancel Then WScript.quit If fs.FileExists ("\\dc\NETLOGON\ultravnc\vncviewer.exe") Then FilePath = """\\dc\NETLOGON\ultravnc\vncviewer.exe""" RunCMD = FilePath & CompName RetCode = WshShell.Run (RunCMD,5) |
|
Отправлено: 08:07, 11-12-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата yanus74:
|
|
Отправлено: 08:51, 11-12-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Цитата Iska:
в результате, получается уже не два переданных аргумента, а 3: LDAP://DC.office.zmzgroup.ru/CN=Иванов Иван Иванович,OU=ООО \Наша Контора\,OU=Пользователи,DC=office,DC=zmzgroup,DC=ru user При этом пропадает символ ". Если между \" и \" еще больше пробелов, то количество аргументов становится еще больше. получается, нужно сделать переменную, в которую циклом будут записываться все аргументы пока не встретится аргумент user. и потом, еще нужно вставить символ " после \, и передать все это в GetObject. Но как это все реализовать, я не знаю( |
|
Отправлено: 09:12, 11-12-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать yanus74, покажите, как именно у Вас вызов скрипта организован, как привязка:
Цитата yanus74:
|
|
Отправлено: 11:38, 11-12-2015 | #4 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать вот эта конструкция решает проблему с пробелами:
Set objArgs = WScript.Arguments Dim LDAPPath For i = 0 to objArgs.Count - 1 if objArgs(i) <> "user" Then LDAPPath=LDAPPath & " " & objArgs(i) Next Цитата Iska:
|
||
Отправлено: 11:39, 11-12-2015 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать С моей колокольни, самым правильным будет заменить в свойствах объекта AD прямые кавычки на типографские («ёлочки») или апострофы:
Ибо жёппа из-за кавычек будет не только в этом месте. Цитата yanus74:
![]() |
|
Отправлено: 12:07, 11-12-2015 | #6 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Цитата Iska:
А по скрипту, я так понял, нужно сделать функцию, которая посчитает количество \ ( гугление показало, что такой функции в VBS нету ), потом сделать цикл, который разложит строку, и после каждого встреченного символа \ добавит Chr(34). И потом уже вызвать функцию GetObject в которую передать переменную. Из простого скрипта целая программа выходит) |
|
Отправлено: 12:20, 11-12-2015 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата yanus74:
Цитата yanus74:
|
||
Отправлено: 13:42, 11-12-2015 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - Экранирование кавычек | pogo | Скриптовые языки администрирования Windows | 12 | 13-10-2015 13:14 | |
Грядёт экранизация биографии Стива Джобса | OSZone News | Новости информационных технологий | 0 | 09-10-2011 08:30 | |
Разное - [решено] Обработка кавычек в семерке | pve | Microsoft Windows 7 | 6 | 28-01-2010 08:03 | |
Добавление двойных кавычек в путь к файлу | Karat19 | AutoIt | 6 | 04-11-2009 11:45 | |
Разное - [решено] передача кавычек в XmlHttpRequest | harrique | Программирование и базы данных | 3 | 26-01-2009 08:29 |
|