Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 11109 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS 2, 08:24 19-06-2021
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
$action = New-ScheduledTaskAction -Execute powershell.exe -Argument @"
    Start-Process -FilePath regsvr32.exe -ArgumentList "/u /s `"${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenuShim64.dll`""
    Start-Process -FilePath regsvr32.exe -ArgumentList "/u /s `"${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenu64.dll`""
    Start-Process -FilePath regsvr32.exe -ArgumentList "/u /s `"${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenu.dll`""
start-sleep -seconds 10
"@
$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 31 -At 9am
$settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$principal = New-ScheduledTaskPrincipal -UserID System -RunLevel Highest
$params = @{
    "TaskName"    = "1111C"
    "Action"    = $action
    "Trigger"    = $trigger
    "Settings"    = $settings
    "Principal"    = $principal
}
Register-ScheduledTask @params -Force
 

 
Никак не получается разрегистрировать dll-ки: как бы экранирование ни ставил, все равно выдает, что

Код:
 
Имя "x86" не распознано и т. д.
 

или отрабатывается команда.
Причем в Планировщике задач, если посмотреть в "Действия", то там все нормально выглядит, и код сам по себе работает, но вот через Планировщик — ни в какую.

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 12:09 15-08-2019 | Исправлено: farag, 12:30 15-08-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
А если наоборот всё в одинарных кавычках:
@'
    -Command Start-Process -FilePath regsvr32.exe -ArgumentList "/u /s ${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenuShim64.dll"  
'@

И -Command забыли.

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 12:43 15-08-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Код:
 
x86 : Имя "x86" не распознано как имя командлета
 

, ибо
в "Действия"

Код:
 
-Command Start-Process -FilePath regsvr32.exe -ArgumentList "/u /s C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat Elements\ContextMenuShim64.dll"
    -Command Start-Process -FilePath regsvr32.exe -ArgumentList "/u /s C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat Elements\ContextMenu64.dll"
    -Command Start-Process -FilePath regsvr32.exe -ArgumentList "/u /s C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat Elements\ContextMenu.dll"
start-sleep -seconds 10
 

, и пробел в пути.
Паузу поставил, соответственно, чтобы можно было прочесть ошибки.
 
Добавлено:
iNNOKENTIY21
Такое ощущение, что надо как-то через запятую писать аргументы...

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 12:59 15-08-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
а так:
@'
    -Command "regsvr32.exe /u "$env:ProgramFiles'('x86')'\Adobe\'Acrobat DC\Acrobat Elements\ContextMenuShim64.dll'" ; "regsvr32.exe /u "$env:ProgramFiles'('x86')'\Adobe\'Acrobat DC\Acrobat Elements\ContextMenu64.dll'" ; pause"
'@

 
Всё смешалось в дом Обло… ад кавычек, планировщик, regsvr32.exe
 
Добавлено:
/s убрал, дабы ошибку видеть, нету у меня Acrobat DC

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 13:40 15-08-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
Всё смешалось в дом Обло…

Воистину. Я просто еще не понимаю, почему такие трудности возникли. Никогда не было проблем: и больше конструкции заворачивал в Планировщик.
 
Добавлено:
iNNOKENTIY21
Ни в какую. Какой-то заколдованный круг.
 
Добавлено:
iNNOKENTIY21
Перенес из папки dll все.

Код:
 
$action = New-ScheduledTaskAction -Execute powershell.exe -Argument @"
    -Command Start-Process -FilePath regsvr32.exe -ArgumentList "/u D:\1\ContextMenuShim64.dll"
    -Command Start-Process -FilePath regsvr32.exe -ArgumentList "/u D:\1\ContextMenu64.dll.dll"
    -Command Start-Process -FilePath regsvr32.exe -ArgumentList "/u D:\1\ContextMenu.dll"
    start-sleep -seconds 10
"@
$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 31 -At 9am
$settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$principal = New-ScheduledTaskPrincipal -UserID $env:USERNAME -RunLevel Highest
$params = @{
    "TaskName"    = "2C"
    "Action"    = $action
    "Trigger"    = $trigger
    "Settings"    = $settings
    "Principal"    = $principal
}
Register-ScheduledTask @params -Force
 

Если даже так написать, то выдает

Код:
 
Start-Process : Не удается найти позиционный параметр, принимающий аргумент "D:\1\ContextMenuShim64.dll".
 

 
Добавлено:

Код:
 
$action = New-ScheduledTaskAction -Execute powershell.exe -Argument @"
    regsvr32.exe /u /s '${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenuShim64.dll'
    regsvr32.exe /u /s '${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenu64.dll'
    regsvr32.exe /u /s '${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenu.dll'
    start-sleep -seconds 10
"@
$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 31 -At 9am
$settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$principal = New-ScheduledTaskPrincipal -UserID $env:USERNAME -RunLevel Highest
$params = @{
    "TaskName"    = "2C"
    "Action"    = $action
    "Trigger"    = $trigger
    "Settings"    = $settings
    "Principal"    = $principal
}
Register-ScheduledTask @params -Force
 

Вот так заработало лишь и именно с такими кавычками.

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 13:49 15-08-2019 | Исправлено: farag, 14:25 15-08-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
А как у меня выше, не сработало?
Скобы, путь с пробелами в '  '
-Command один раз
Команды через ;
PowerShell -command "команда 1 "c:\'path to'\program" ; "команда 2 "c:\'path to'\program'('2')'"

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 14:27 15-08-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Не-а

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 15:11 15-08-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
Вот так заработало лишь и именно с такими кавычками.

Хмм, народ, что за мучения с кавычками? Есть же описание:
man about_Quoting_Rules
или оно же на русском...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:15 16-08-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Не вижу, где там, про фигурные скобки, про раскрытие переменных в одинарных кавычках, благодаря им? Рабочий вариант бы, без {них}, для выше озвученной задачи

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 12:28 16-08-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
 где там, про фигурные скобки

man about_variable
 

Цитата:
про раскрытие переменных в одинарных кавычках

про раскрытие переменных и вычисление выражений там, как раз, есть.

Код:
PS_5.1> ${var i able}=3
PS_5.1> '${var i able}'
${var i able}
PS_5.1> "${var i able}"
3
PS_5.1> "'${var i able}'"
'3'
PS_5.1> """${var i able}"""
"3"
PS_5.1>

То бишь, в одинарных кавычках - это литералы... как не крути... а вот одинарные кавычки внутри двойных, это уже просто кавычки-литералы, не имеющие никакого синтаксического значения.
 
Тут скорее проблема в сочетаниях строк, литеральных значений и дальнейшей передачи скриптблока, содержащего внешнюю программу regsvr32.exe, на выполнение...
А кто именно (regsvr32.exe или powershell) съедает или не воспринимает правильно те или иные кавычки, вот с этим и надо разбираться...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:37 16-08-2019 | Исправлено: YuS_2, 15:00 16-08-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
about_variable не about_Quoting_Rules

Цитата:
Тут скорее проблема

Таки есть мучения с кавычками

Цитата:
А кто именно (regsvr32.exe или powershell) ...

iNNOKENTIY21 14:40 15-08-2019
Цитата:
Всё смешалось в дом Обло…


Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 15:18 16-08-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Просто именно с regsvr32 столкнулся с такой проблемой. Всегда спасали комбинации кавычек и `.

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 15:55 16-08-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
about_variable не about_Quoting_Rules

Дык, разницы между ${var i able} и $variable, нет никакой, и то, и другое - переменные, поэтому about_Quoting_Rules действительно для любого из вариантов.
${var i able} - всего лишь переменная содержащая различные спецсимволы, в том числе и пробел... именно о фигурных скобках описано в about_variable
А кавычки работают с одинаковым результатом для любого вида переменных, т.е. нет никакого особенного раскрытия переменной с фигурными скобками, я об этом.
 

Цитата:
Таки есть мучения с кавычками

я бы уточнил - какие именно, потому как, искренне не понимаю - в чем проблема?
 
farag

Цитата:
Всегда спасали комбинации кавычек и `.

Они достаточно продуманно сделаны, кто бы там, что ни говорил... просто необходимо подробное чтение мануала и запуск нескольких простых примеров, чтобы понять механизм их работы
 

Цитата:
Просто именно с regsvr32 столкнулся с такой проблемой.

Сам не проверял, но, возможно, что для этой программы именно одинарные кавычки не являются правильными символами экранирования путей с пробелами...
Хотя, если заработал вариант именно с ними, возможно, мое предположение ошибочно...
 
Что касается кавычек, надо бы ещё попробовать такой вариант:

Код:
$action = New-ScheduledTaskAction -Execute powershell.exe -Argument @"
    regsvr32.exe /u /s ""${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenuShim64.dll""
    regsvr32.exe /u /s ""${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenu64.dll""
    regsvr32.exe /u /s ""${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenu.dll""
    start-sleep -seconds 10  
"@  
$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 31 -At 9am
$settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$principal = New-ScheduledTaskPrincipal -UserID $env:USERNAME -RunLevel Highest
$params = @{
    "TaskName"    = "2C"
    "Action"    = $action
    "Trigger"    = $trigger
    "Settings"    = $settings
    "Principal"    = $principal
}
Register-ScheduledTask @params -Force

- он тоже должен быть рабочим...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 16:58 16-08-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Нет. Уже так делал. Только почему-то тот вариант, который показывал.

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 19:52 17-08-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
Уже так делал.

А, ну да, говорю же, надо подробно читать маны...

Цитата:
Автономные строки, заключенные в одиночные и двойные кавычки
 
      Правила использования кавычек в автономных строках немного  
      отличаются.
 
 
      Автономная строка - это строка, заключенная в одиночные или  
      двойные кавычки, в которой кавычки интерпретируются буквально.  
      Автономная строка может состоять из нескольких строк. Все  
      строки в автономной строке интерпретируются как строки, даже  
      несмотря на то что они не заключены в кавычки.

 
То бишь, кавычки должны быть одинарным, в смысле двойными, но не удвоенными (сорри за каламбур ):

Код:
$action = New-ScheduledTaskAction -Execute powershell.exe -Argument @"
    regsvr32.exe /u /s "${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenuShim64.dll"
    regsvr32.exe /u /s "${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenu64.dll"
    regsvr32.exe /u /s "${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\ContextMenu.dll"
    start-sleep -seconds 10  
"@  
$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 31 -At 9am
$settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$principal = New-ScheduledTaskPrincipal -UserID $env:USERNAME -RunLevel Highest
$params = @{
    "TaskName"    = "2C"
    "Action"    = $action
    "Trigger"    = $trigger
    "Settings"    = $settings
    "Principal"    = $principal
}
Register-ScheduledTask @params -Force

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:20 17-08-2019 | Исправлено: YuS_2, 08:34 18-08-2019
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
ад кавычек

Цитата:
Таки есть мучения с кавычками

Я недавно во флудильне посетовал, что индусы не смогли нормальный разбор командной строки для PS сделать, это ещё лютый батхерт у одного небезызвестного товарища вызвало.
Возможно, это здесь тоже всплыло, надо разбираться. Если будет время, попробую, самому интересно.
Но можно попробовать обойти - кодировать командную строку для PS в base64, а исполнять через EncodedCommand. Текст, конечно нечитаемый, но зато и проблем ни с пробелами, ни с кавычками нет. Я так в FARе сделал для выполнения из командной строки FARа через префикс (есть в нём такая фича) строк PS. Правда не знаю, как именно для этой задачи присобачить такое, надо экспериментировать, это только идея.

----------
Разум когда-нибудь победит

Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 01:36 18-08-2019 | Исправлено: Smitis, 01:36 18-08-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis

Цитата:
Я недавно во флудильне посетовал, что индусы не смогли нормальный разбор командной строки для PS сделать

Ну, в данном случае, видимо, накладка ещё и внешней программы, помимо, собственно, разбора комстроки...
Не помню, упоминал ли я ранее, но у powershell, кстати, начиная с версии 3.0, для таких случаев есть замечательный оператор --%
man about_parsing

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:51 18-08-2019
Unnicked

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как можно проще всего решить следующую задачу на классических bat-файлах, без PS:
1. В каталоге есть текстовые файлы
2. Необходимо в содержимое каждого тестового файла каталога в начало добавить заданный статический текст и текущее время в формате UTC YYYY-MM-DDThh:mm:ssZ, после чего переместить обработанные файлы в другой каталог

 
Smitis, спасибо! Еще вариант от BorlandImho тут

Всего записей: 1127 | Зарегистр. 19-08-2005 | Отправлено: 11:47 18-08-2019 | Исправлено: Unnicked, 21:56 19-08-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
YuS_2
 
Чё-то я не понял проблемы
 
help New-ScheduledTaskAction
Parameters
    -Argument <String>
        Specifies arguments for the command-line operation.
 
Итак, в -Argument пишется строка параметров, с которой должен вызываться процесс.
Если вы пихаете туда нечто, что ею не является - зачем удивляться нежданчику?
 
 
Нормальное использование: посмотреть help powershell.exe и напиисать по этой спецификации строку аргументов.
 
 
Добавлено:
 
http://forum.ru-board.com/topic.cgi?forum=62&topic=30859&start=680#11

Всего записей: 17147 | Зарегистр. 14-10-2001 | Отправлено: 12:07 18-08-2019 | Исправлено: LevT, 12:36 18-08-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Unnicked
Командная строка, батники, сценарии (bat, cmd) - [126] :: Программы :: Компьютерный форум Ru.Board там быстрее ответят. Тут эти PowerShellщики всё оккупировали
 
Добавлено:

Цитата:
я не понял проблемы


Цитата:
что за мучения с кавычками?

Мучения есть. Проблем нет, на это только требуется 6 разделов справки [и нет уверенности' что все случаи покроют]





Так, не расслабляемся по поводу и без

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 13:15 18-08-2019 | Исправлено: KLASS, 14:13 18-08-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru