Имя: Пароль:
1C
1С v8
Выполнение команды системы в 1с
,
0 perlharbor
 
15.06.21
11:17
Всем привет.
Пытаюсь через Wscript.Shell (тут вопрос даже не в 1с, а в тот,как правильно написать команду в цмд) выполнить такую команду

powershell start-process net -Verb Runas -argumentlist localgroup , "Пользователи удаленного рабочего стола" , ТестовыйПользователь , /add

Не работает. Ошибка значит такая - Не удается найти позиционный параметр, принимающий аргумент "удаленного".Я так понимаю дело в скобках.Если группа в одно слово команда выполняется.Пробовал символы ' ' и  `",не помогает. Знающие люди,помогитее)
1 1Сергей
 
15.06.21
11:29
КомандаЦМД = "powershell start-process net -Verb Runas -argumentlist localgroup , ""Пользователи удаленного рабочего стола"" , ТестовыйПользователь , /add";

если я правильно настрадамуснул
2 acht
 
15.06.21
11:36
(0) powershell Start-Process -Verb Runas -FilePath 'net.exe' -ArgumentList 'localgroup, "Пользователи удаленного рабочего стола", ТестовыйПользователь, /add,'
3 ДедМорроз
 
15.06.21
11:37
А чего,просто запустить net.exe не получается.
Просто, runas если от другого пользователя,требует ввода пароля,ну и,внезапно,повышение привилегий через него не включается.
4 perlharbor
 
15.06.21
11:42
(1) Не,так пробовал,не работает
5 perlharbor
 
15.06.21
11:43
(2) Сама команда выполнилась,но в группу пользователь не добавился. Даже не понял в чем проблема. Открылось еще одно окошко цмд на милисекунду,и внем наверняка ошибка была
6 eklmn
 
гуру
15.06.21
11:52
извращенцы, запустить пошик чтоб запустить цмд )))

add-LocalGroupMember "Пользователи удаленного рабочего стола" -Member "ВасинДомен\Вася"
7 eklmn
 
гуру
15.06.21
11:54
можно в одиначные ковычки
8 perlharbor
 
15.06.21
12:24
(6) Так я же не смогу штатно через Wscript.Shell скрипт ps выполнить, разве нет?
9 acht
 
15.06.21
12:25
(5) > Даже не понял в чем проблема
В кодировке консоли.
10 perlharbor
 
15.06.21
12:26
(2) Есть какой-то ключ, чтобы окно с ошибкой не закрывалось?
11 1Сергей
 
15.06.21
12:27
(10) запускать батник с последней строкой PAUSE
12 perlharbor
 
15.06.21
12:33
(9) (11)  Проверил, действительно кирилица в иероглифы превращается. Как побороть?)
13 1Сергей
 
15.06.21
12:38
(12) лучший способ - не создавать пользователей с кирилицей
а так в батнике команда
chcp 866
14 perlharbor
 
15.06.21
13:31
(11) написал бат,запустил,ошибок нет.Но и в группу не добавляется
15 perlharbor
 
16.06.21
11:16
В общем дело не в кодировке, а передаче параметров в argumentlist. Перехватил вывод ошибок,вот они:

Несуществующий глобальный пользователь или группа: удаленного.
Несуществующий глобальный пользователь или группа: рабочего.
Несуществующий глобальный пользователь или группа: стола.
Системная ошибка 1378.
Указанная учетная запись уже входит в эту группу.

Поняли в чем прикол?) Когда я пишу это
powershell Start-Process -FilePath net -ArgumentList "localgroup ,'""пользователи удаленного рабочего стола""', спбтест3, /add"

строка "пользователи удаленного рабочего стола" разбивается на массив групп.В синтаксисе net localgrouop имя группы одно,а вот пользователей(и групп) можно указать много через пробелы.Собственно вопрос-как правильно передать эти параметры в аргументлист?
16 perlharbor
 
16.06.21
11:18
Start-Process -FilePath net -ArgumentList 'localgroup' ,'"пользователи удаленного рабочего стола"', 'спбтест3', '/add'
Вот такая команда в повершел выполняется, добавляю перед Start-Process вначале powershell.exe -работать перестает
17 ДенисЧ
 
16.06.21
11:23
Запиши команду в файл и выполни его
18 perlharbor
 
16.06.21
11:47
(17) И пользователей каждый раз в файле менять? Хотелось бы одной строкой в КомандаСистемы(),а там и параметр передать можно
19 ДенисЧ
 
16.06.21
11:50
(18) временные файлы уже запретили?
20 ДедМорроз
 
16.06.21
11:52
А просто почитать параметры net.exe и передать ему то,что он хочет.
И,анезапно,кавычки могут быть вложенными,то есть двойные,четверные и т.п.
21 perlharbor
 
16.06.21
12:26
(19) А,каждый раз создавать файлик скрипта повершел.Ну не знаю.Как вариант,наверное да. Но,хотя бы,для общего развития хотелось бы понять как команду без файлика выполнить)
22 perlharbor
 
16.06.21
12:29
(20) Я уж что только не пробовал,и экранирование пробелов,и кавычек,и тройные ",и комбинации кавычек =).Опыта не хватает грамотно параметры передать
23 eklmn
 
гуру
16.06.21
13:15
(8) Штаааа мляяя? ты в(0) это пытаешся сделать же? или ты что ввообще пытаешся? тут дело даже не в параметрах, ты через опу делаешь просто
24 perlharbor
 
16.06.21
13:39
(23) Окей,поясняю.
Мне надо пользователя в группу добавить. Чтоб это сделать нужны повышенные привелегии (типа запуск от администратора).Как я понял можно сделать это только в повер шелл через start-process с ключом -verb runas. (6) может и сработало бы, но повышенных прав в этой команде не будет (да и смысл,если есть net.exe). Смысл использования повершел только в повышении привелегий.
25 eklmn
 
гуру
16.06.21
13:41
(24) runas и в цмд есть
26 eklmn
 
гуру
16.06.21
13:43
runas /user:Administrator@DOMAIN "net localgroup Administrators DOMAIN\username /add"
27 acht
 
16.06.21
13:43
(26) Ему эскалация привелегий текущего нужна, а не пароль админа вводить.
28 perlharbor
 
16.06.21
13:44
(27) В точку
29 ДедМорроз
 
16.06.21
17:05
Shell.Application
ShellExecute ELEV
Должно помочь без всякого power shell.
30 perlharbor
 
16.06.21
23:02
В общем методом научного тыка удалось выполнить (0)
powershell Start-Process -verb runas -FilePath net -ArgumentList localgroup,  '"""пользователи удаленного рабочего стола"""'  ,'спбтест3','/add'
Теперь пытаюсь через ком объект А=WshShell.run() выполнить эту строку,не работает. Точнее возвращает единичку, на мгновенье открывается консоль повершелл и закрывается,не доходя даже до uac.Та же самая строка в КомандаСистемы() отрабатывает. Только результат не возвращает.Выдод в файл через -RedirectStandardError и -RedirectStandardOutput вместе с -verb runas нельзя использовать. В чем может быть подвох с WshShell?
31 Garykom
 
гуру
16.06.21
23:09
32 Garykom
 
гуру
16.06.21
23:10
Когда уже гуглить научитесь? У меня первая же строка в https://bit.ly/3cNCjr0
33 perlharbor
 
17.06.21
13:10
(32) А чем мне эта статья поможет? Я ведь run использую,а не exec, у него есть параметр есть дожидаться окончания.Как выяснил проблема была в && в строке команды
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший