|   |   | 
| 
 | Как правильно задать команду для PowerShell | ☑ | ||
|---|---|---|---|---|
| 0
    
        ShultzMAN 28.06.23✎ 14:05 | 
        Всем привет!
 Не закидывайте помидорами, я правда искал)) Вопрос несложный) Требуется прочитать данные о контейнерах сертификатов средствами 1С есть команда: Команда = Start-Process "C:\Program Files\Crypto Pro\CSP\certmgr.exe" -ArgumentList "-list", "-store mmy" -RedirectStandardOutput "c:\Temp\result.txt" данные команда вручную через консоль PS выполняется, файлик ("c:\Temp\result.txt") создается Затем WshShell = Новый COMОбъект("WScript.Shell"); Рез = WshShell.Exec("powershell " + Команда); Ошибка Рез = WshShell.Exec("powershell -Command " + Команда); Ошибка Подскажите как надо то)) | |||
| 1
    
        vde69 28.06.23✎ 14:28 | 
        что за ошибка?     | |||
| 2
    
        ShultzMAN 28.06.23✎ 14:58 | 
        Start-Process : Не удается найти позиционный параметр, принимающий аргумент "Files\Crypto".
 строка:1 знак:1 + Start-Process C:\Program Files\Crypto Pro\CSP\certmgr.exe -ArgumentLi ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand | |||
| 3
    
        lEvGl гуру 28.06.23✎ 15:00 | 
        в кавычках надо писать путь     | |||
| 4
    
        lEvGl гуру 28.06.23✎ 15:01 | 
        в котором есть пробелы     | |||
| 5
    
        ShultzMAN 28.06.23✎ 15:05 | 
        сделал с кавычками. опять ругается, но уже другое
 строка:1 знак:78 + ... Program Files\Crypto Pro\CSP\certmgr.exe -ArgumentList -list, -store ... + ~ Отсутствует аргумент в списке параметров. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : MissingArgument | |||
| 6
    
        lEvGl гуру 28.06.23✎ 15:06 | 
        дайте дословно как в 1С написано     | |||
| 7
    
        ShultzMAN 28.06.23✎ 15:07 | 
        Какой синтаксис из этих правильный?
 Рез = WshShell.Exec("powershell " + Команда); или Рез = WshShell.Exec("powershell -Command " + Команда); | |||
| 8
    
        lEvGl гуру 28.06.23✎ 15:09 | 
        там много кавычек, они все должны быть, когда в 1С пишете, кавычек будет намного больше, чтобы получить итоговую строку с кавычками в пути, в  "-list", "-store mmy" и т д.
 то есть в отладке вы должны увидеть передаваемую строку именно в таком виде, как она пишется в повершелл | |||
| 9
    
        ShultzMAN 28.06.23✎ 15:10 | 
        СтрокаСкрипт = "Start-Process ""C:\Program Files\Crypto Pro\CSP\certmgr.exe"" -ArgumentList ""-list"", ""-store mmy"" -RedirectStandardOutput ""c:\TEMP\Alarm.txt""";
 Команда = "powershell " + СтрокаСкрипт; WshShell = Новый COMОбъект("WScript.Shell"); ОшибкаСтрока = WshShell.Exec(Команда).StdErr.ReadAll() | |||
| 10
    
        ShultzMAN 28.06.23✎ 15:13 | 
        это строка без лишних кавычек
 powershell Start-Process "C:\Program Files\Crypto Pro\CSP\certmgr.exe" -ArgumentList "-list", "-store mmy" -RedirectStandardOutput "c:\TEMP\Alarm.txt" | |||
| 11
    
        ShultzMAN 28.06.23✎ 15:15 | 
        если строку
 Start-Process "C:\Program Files\Crypto Pro\CSP\certmgr.exe" -ArgumentList "-list", "-store mmy" -RedirectStandardOutput "c:\TEMP\Alarm.txt" выполнить в power shell е то всё отрабатывает отлично | |||
| 12
    
        lEvGl гуру 28.06.23✎ 15:28 | 
        ну теперь с кавычками все нормально
 через КомандаСистемы не пробовали? | |||
| 13
    
        lEvGl гуру 28.06.23✎ 15:32 | 
        -ArgumentList -list, -store
 вот это как то странно выглядит что говрит СП по этому менеджеру криптопро, как там задаются параметры и аргументы | |||
| 14
    
        ShultzMAN 28.06.23✎ 16:06 | 
        Спасибо за наводку
 1. Работает так: СтрокаСкрипт = "Start-Process -NoNewWindow -FilePath 'C:\Program Files\Crypto Pro\CSP\certmgr.exe' -ArgumentList '-list -store mMy' -RedirectStandardOutput c:\TEMP\Alarm.txt"; Команда = "powershell " + СтрокаСкрипт; WshShell = Новый COMОбъект("WScript.Shell"); ОшибкаСтрока = WshShell.Exec(Команда).StdErr.ReadAll(); 2. Рез = WshShell.Exec("powershell " + Команда); или Рез = WshShell.Exec("powershell -Command " + Команда); Разницы нет | |||
| 15
    
        ShultzMAN 28.06.23✎ 16:07 | 
        "внутри" кавычки одинарные     | |||
| 16
    
        Garykom гуру 28.06.23✎ 16:26 | ||||
| 17
    
        eklmn гуру 29.06.23✎ 09:46 | 
        чем не устатраивает просто?
 КомандаСистемы("""""C:\Program Files\Crypto Pro\CSP\certmgr"""" -list > C:\temp\certout.txt"); | |||
| 18
    
        lEvGl гуру 29.06.23✎ 10:00 | 
        эта неинтересна     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |