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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

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



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

Цитата:
В общем, например, если переписать тот код в соответствии с документацией, без особых заморочек с кавычками, то получилось бы это:  

Плодятся окна, висят, но ничего...
 

Цитата:
поэтому, я бы не стал дергать на каждое действие новый экземпляр powershell, а сделал бы проще:  

Работает
 

Цитата:
мысля оказалась неверной и по итогам последующего эксперимента, выход скрипта получился таким:  

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

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 13:14 20-08-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
 
А вот это у тебя работает?
Должно
 

Код:
 
$command = {
    $dll = "ContextMenuShim64.dll,ContextMenu64.dll,ContextMenu.dll" -split ","
    $dll | regsvr32.exe /u /s "${env:ProgramFiles(x86)}\Adobe\Acrobat DC\Acrobat Elements\$_"
}
 
& $command
 

 
У меня регистрировать нечего: в случае очепятки сам подумай, как поправить.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 13:56 20-08-2019 | Исправлено: LevT, 14:02 20-08-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Нет.
 
В принципе вот и сам файл: http://rgho.st/7D8ymJDwy

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 14:28 20-08-2019
LevT



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

Код:
 
 notepad ${env:ProgramFiles(x86)} + "\Adobe\Acrobat DC\Acrobat Elements\ContextMenuShim64.dll"
 

 
Ты не баловался со Strict mode?
А с Constrained language?
 
 
Добавлено:
Справа от присваивания - на выбор три разных сервиса:
 
1) string expansion (а-ля баш/цмд, но улучшенное)
2) variable dereferencing = вызов функции как частный случай
3) scriptblock invocation
 
Сам выбирай, что использовать.
Если не работает одно, можно пробовать другое

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 14:56 20-08-2019 | Исправлено: LevT, 15:08 20-08-2019
maix



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги подскажите пожалуйста. Пытаюсь через cmd создать задачу в планировщике на множестве серверов для их перезапуска.  

Код:
SCHTASKS /Create /S SERVER /U admin /P **** /SC DAILY /TN Daily_Server_Reboot /ST 05:00 /F /RL HIGHEST /TR "%SYSTEMROOT%\System32\shutdown.exe /r /f /t 90 /d p:0:0 /c \"Ежедневный перезапуск. Для отмены: shutdown.exe /a \""

 
Но не могу нигде найти как сделать запуск задания вне зависимости от регистрации пользователя, т.е. даже если никто не вошел на сервер. Подскажите плиз, если кто знает

Всего записей: 194 | Зарегистр. 14-06-2006 | Отправлено: 18:51 20-08-2019
YuS_2



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

Цитата:
Плодятся окна, висят, но ничего...

Хмм, это уже странно, ибо строки соответствуют работоспособным вариантам:

Есть предположение, что проблема не c powershell и не с cmd...
Как проверялась задача? Непосредственно из планировщика?
А какая итоговая строка и аргумент получается в задании?
 

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

Тут тоже непонятно... надо бы глянуть итоговую строку...
По идее, должно быть всё в порядке...
А этот вариант работает:

Код:
$action = New-ScheduledTaskAction -Execute powershell.exe -Argument @"
    -command "&{
        notepad "D:\test.txt"
        notepad "D:\test.txt"
        notepad "D:\test.txt"
    }"
"@
$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

?
Если работает, то надо разбираться, опять же, с итоговой задачей планировщика, а именно, с тем, что туда записывается в результате выполнения скрипта.
 
Добавлено:
Smitis

Цитата:
Если это о cmd, то он вносит свои искажения. Лучше через Win-R, там запуск в "чистом" виде.  
П.С.  
Извиняюсь, не обратил внимание, что речь о консоли PS

Да я там ту петицию несколько раз дополнял. Первоначально, уточнения про какую консоль речь, не было, поэтому так получилось. А когда перечитал, то стало понятно, что надо бы это дело уточнить, иначе будет непонятная каша про консоли...

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



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

Цитата:
не могу нигде найти как сделать запуск задания вне зависимости от регистрации пользователя, т.е. даже если никто не вошел на сервер.

Организуйте запуск задачи от имени системы...
 

Цитата:
/RU   <пользователь> Учетная запись (пользовательский контекст)
                       выполняется задача. Для системной учетной записи
                       допустимыми значениями являются "", "NT AUTHORITY\SYSTEM"
                       или "SYSTEM".
                       Кроме того, для задач v2 доступны параметры
                       NT AUTHORITY\LOCALSERVICE и  NT AUTHORITY\NETWORKSERVICE, также как
                       также как и известные идентификаторы безопасности
                       для всех трех параметров.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:04 21-08-2019 | Исправлено: YuS_2, 11:13 21-08-2019
farag



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

Цитата:
Ты не баловался со Strict mode?  

Нет.
YuS_2

Цитата:
А этот вариант работает:  

Работает.
Да лучше забить: с одинарными кавычками работает, да и Бог с ними.
 
Другой вопрос возник

Код:
 
using System;
using System.Runtime.InteropServices;
public class SFW
{
    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool SetForegroundWindow(IntPtr hWnd);
}
 

вставил сюда

Код:
 
$Win32ShowWindowAsync = @{
    Namespace = "Win32Functions"
    Name = "Win32ShowWindowAsync"
    Language = "CSharp"
    MemberDefinition = @"
        [DllImport("user32.dll")]
        public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool SetForegroundWindow(IntPtr hWnd);
"@
}
IF (-not ("Win32Functions.Win32ShowWindowAsync" -as [type]))
{
    Add-Type @Win32ShowWindowAsync
}
$title = "*11*$env:COMPUTERNAME*"
Get-Process | ForEach-Object -Process {
    IF (($_.ProcessName -eq "vmconnect") -and ($_.MainWindowTitle -like $title))
    {
        [Win32Functions.Win32ShowWindowAsync]::ShowWindowAsync($_.MainWindowHandle, 10) | Out-Null
        [Win32Functions.Win32ShowWindowAsync]::SetForegroundWindow($_.MainWindowHandle) | Out-Null
    }
}
 

 
Но пишет

Код:
 
Сбой вызова метода из-за отсутствия в [Win32Functions.Win32ShowWindowAsync] метода с именем "SetForegroundWindow".
строка:21 знак:3
+         [Win32Functions.Win32ShowWindowAsync]::SetForegroundWindow($_ ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ( [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound
 

 
Как надо правильно добавить?..

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 14:12 22-08-2019 | Исправлено: farag, 14:12 22-08-2019
YuS_2



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

Цитата:
Как надо правильно добавить?

Да вроде бы правильно... во всяком случае, у меня работает...
Можно проверить наличие методов:

Код:
[Win32Functions.Win32ShowWindowAsync]|gm -stat

если он там есть, но powershell выдает ошибку, значит чьи-то руки, где-то что-то поломали...
что и где - лучше не спрашивать, что-либо вразумительное, вряд ли кто ответит...
А все эксперименты рекомендую проводить в виртуалке, чтобы потом не было мучительно больно...

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



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

Цитата:
Как надо правильно добавить?..

У меня тоже отрабатывает. Но на окно не переключает, только значок в панели задач выделяется. Если это цель, то норм

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Мне надо переводить фокус на окно... Я напутал цифры, что ли? Просто 10 не подошло: если окно не свернуто, то она и не сможет быть развернуто.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 18:24 22-08-2019
YuS_2



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

Цитата:
Просто 10 не подошло

https://docs.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-showwindow

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Дык, читал, конечно. Видать, надо еще раз читать.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 18:39 22-08-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
есть хитрости
Вот так делал: Get-DefaultBrowser.ps1
Две функции Set-WindowShow, Set-WindowForeground и их вызов в конце

Код:
# эта фигня нужна, что бы Set-WindowForeground нормально отрабатывал, иначе через раз, два…
    Set-WindowShow -hWnd $hWnd -CmdShow MINIMIZE
    Set-WindowShow -hWnd $hWnd -CmdShow SHOWNA
 
    Set-WindowForeground -hWnd $hWnd

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 19:01 22-08-2019
farag



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

Цитата:
[Win32Functions.Win32ShowWindowAsync]|gm -stat  


Код:
 
Name                MemberType Definition                                                          
----                ---------- ----------                                                          
Equals              Method     static bool Equals(System.Object objA, System.Object objB)          
new                 Method     Win32Functions.Win32ShowWindowAsync new()                          
ReferenceEquals     Method     static bool ReferenceEquals(System.Object objA, System.Object objB)
SetForegroundWindow Method     static bool SetForegroundWindow(System.IntPtr hWnd)                
ShowWindowAsync     Method     static bool ShowWindowAsync(System.IntPtr hWnd, int nCmdShow)
 

Но не работает...

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 12:40 23-08-2019
YuS_2



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

Цитата:
Но не работает...


Код я скопировал и запустил у себя, всё работает без каких-либо ошибок...

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Это воистину странно, но только перезагрузка ПК помогла. Видать, я его доконал на работе, что у всех работает, а у меня нет. (окно PS закрывал, конечно)

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 13:35 23-08-2019
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, приветствую!
Как говориться, I need HELP!
 
Мне нужно вывод команды сравнить и убедиться, что комп существует в домене и, если он существуют, то предложить действие.
Начал делать так:
 
$Comp = Get-ADComputer "Имя компа" -Properties * | FT -HideTableHeaders Name
До выбора действия, пока не дошел. Не могу понять, как мне сравнить Вывод предыдущей команды с именем компа, чтобы получить $TRUE и двинуться дальше.
Подскажите плиз.

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 13:44 23-08-2019 | Исправлено: newhk, 13:45 23-08-2019
YuS_2



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

Цитата:
$Comp = Get-ADComputer "Имя компа" -Properties * | FT -HideTableHeaders Name  
До выбора действия, пока не дошел. Не могу понять, как мне сравнить Вывод предыдущей команды с именем компа, чтобы получить $TRUE и двинуться дальше.

Сформулируйте точнее вопрос. Вывод какой предыдущей команды хочется сравнить с именем компа?
В любом случае, бессмысленно записывать в переменную результат работы командлета format-table. Лучше так:

Код:
$Comp = (Get-ADComputer "Имя компа" -Properties *).name

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



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Спасибо!
То что надо!

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 14:25 23-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