Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 18

Powershell циклы

15.10.2018, 17:56. Показов 1341. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем,привет,у меня есть задача,выбивать процессы по пути баз 1С,написал код,он ищет все процессы и совпадения по имени баз
Код:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
 $process = "1cv8c.exe"
$base1=Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine | Where {$_ -match "БАЗА1"}
$base2=Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine | Where {$_ -match "БАЗА2"}
$base3=Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine | Where {$_ -match "БАЗА3"}
$base4=Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine | Where {$_ -match "БАЗА4"}
$base5=Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine | Where {$_ -match "БАЗА5"}
$base6=Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine | Where {$_ -match "БАЗА6"}
$base7=Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine | Where {$_ -match "БАЗА7"}
$base8=Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine | Where {$_ -match "БАЗА8"}
$base9=Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine | Where {$_ -match "БАЗА9"}
$base10=Get-WmiObject Win32_Process -Filter "name = '$process'"| Select-Object CommandLine | Where {$_ -match "БАЗА10"}
Как в цикле,так скажем убить все эти процессы по имени баз на время,допустим 2 часа,что бы пользователи повторно не могли зайти в нее,с powershell знаком мало,прошу помощи))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2018, 17:56
Ответы с готовыми решениями:

PowerShell vs PowerShell ISE
Скажите, пожалуйста, чем PowerShell отличается от PowerShell ISE. Спасибо.

PowerShell
Надо привести пример использования командлета Disable-WSManCredSSP в PowerShell. Ввожу команду Disable-WSManCredSSP -Role Client и...

Powershell и AD
Доброго времени суток! Первый раз в жизни взялся за Powershell и столкнулся со следующей задачей: 1. Спрашивает у администратора...

14
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
15.10.2018, 18:01
Rapashocker,
Всем,привет,у меня есть задача,выбивать процессы по пути баз 1С
Лучше делать через COMConnector 1C

База файловая? или клиент-серверный вариант?
0
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 18
15.10.2018, 18:07  [ТС]
Да,понимаю,но дело в том,что все находится локально,пользователи и базы,в виде файла и это один из простых вариантов до которых я как то не допру))
Можно ведь как то,просто знаний циклов не хватает,не пойму что с чем сравнивать или приравнивать.

Добавлено через 3 минуты
База файловая вообщем.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
15.10.2018, 18:12
Цитата Сообщение от Rapashocker Посмотреть сообщение
у меня есть задача,выбивать процессы по пути баз 1С
Свойства Path или MainWindowTitle (из кода ниже) указывают на нужную базу?

PowerShell
1
gps 1cv8c | fl id,name,MainWindowTitle,Path
0
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 18
15.10.2018, 18:17  [ТС]
Да,только пока не совсем понимаю зачем это))

Добавлено через 54 секунды
не на базу указывает,а на саму 1С ку,местонахождение программы
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
15.10.2018, 18:25
Цитата Сообщение от Rapashocker Посмотреть сообщение
не на базу указывает,а на саму 1С ку,местонахождение программы
Так виден только путь к 1с-клиенту или всё-таки какие-то данные, позволяющие связать процесс с нужной базой?
0
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 18
15.10.2018, 18:26  [ТС]
Вот результат:
Id : 13256
Name : 1cv8c
MainWindowTitle :
Path : C:\Program Files\1cv8\8.3.12.1685\bin\1cv8c.exe
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
15.10.2018, 18:41
Цитата Сообщение от Rapashocker Посмотреть сообщение
Вот результат:
Понятно, значит таким образом связь с нужной базой не видна...

Ну значит пусть будет через Get-WmiObject.

Я не понял, какие именно у вас проблемы с остановкой процессов? Нужно останавливать процесс связанный с именем конкретной базы (БАЗА1)? Тогда, например так:

PowerShell
1
2
3
4
$process = "1cv8c.exe"
$BaseName = '*"БАЗА1"*'
 
Get-WmiObject Win32_Process -Filter "name = '$process'" | ?{$_.CommandLine -like $BaseName} | % {Stop-Process $_.Handle}
0
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 18
15.10.2018, 18:43  [ТС]
А как сделать что бы пользователи вновь не смогли зайти в базу,Stop-Process этого не гарантирует насколько я понимаю.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
15.10.2018, 18:44
Цитата Сообщение от Rapashocker Посмотреть сообщение
на время,допустим 2 часа, что бы пользователи повторно не могли зайти в нее
А вот, думаю делается уже на стороне 1C. Если правильно помню, там можно открыть базу в монопольном режиме или что-то подобное...
0
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 18
15.10.2018, 18:45  [ТС]
и баз 10 штук))

Добавлено через 38 секунд
Да,вы правы,но дело в автоматизации процесса))

Добавлено через 50 секунд
что бы он этот процесс не запустил снова,этого я не понимаю.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
15.10.2018, 18:58
Цитата Сообщение от Rapashocker Посмотреть сообщение
и баз 10 штук))
PowerShell
1
$BaseName = '*БАЗА*'
и мой пример остановит все процессы, у которых в CommandLine есть слово "БАЗА"

Добавлено через 9 минут
Цитата Сообщение от Rapashocker Посмотреть сообщение
что бы он этот процесс не запустил снова,этого я не понимаю.
Вы хотите чтобы PS:

1. Завершал процесс/процессы 1cv8c.exe
2. Устанавливал запрет на запуск 1cv8c.exe с определённым CommandLine
3. Спустя 2 часа отменял этот запрет.

Тогда для п.2 вам понадобится удалять у пользователя из списка баз нужное подключение, а для п.3 создавать задание в планировщике, которое спустя 2 часа вернёт всё обратно.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
15.10.2018, 20:53
Rapashocker,
Вы выбрали файловый вариант базы, а теперь хотите что-то автоматизировать? Вы ошиблись...
В клиент-серверном варианте, есть огромные возможности для автоматизации, у объекта COMConnector есть агент, который позволяет, делать все что вам угодно, в том числе как раз нужное вам удаление сессий. Также там в одну команду, делается запрет входа пользователей в базу, отключение регламентных заданий.
Это все можно подружить с Powershell, у меня масса наработок по этой теме.
Возможно, конечно агент работает и с файловым вариантом, но утверждать не берусь, не пробовал и не буду.
0
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 18
16.10.2018, 10:44  [ТС]
это не мой сервер и не мои пользователи,я лишь поддержка и переделывать на клиент-серверный вариант пока никто не будет,не так много пользователей для этого,я знаю про Конектор и его возможности,не раз писал обработки пользуясь им,ладно что-нибудь придумаю.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
16.10.2018, 11:01
Rapashocker,
это не мой сервер и не мои пользователи,я лишь поддержка и переделывать на клиент-серверный вариант пока никто не будет
Ну коли так, тогда придется ставить костыли...
Чисто теоретически можно после завершения процессов, сделать подписку на событие появление процесса 1cv8c.exe, при срабатывании этого события, проверять Commandline, и завершать, но тут нужно будет подумать, как эту подписку отключить, после определенного времени.

Добавлено через 5 минут
Вероятно, у подписки есть время создания, можно к нему привязаться... в теории
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2018, 11:01
Помогаю со студенческими работами здесь

Введение в PowerShell
PowerShell Windows PowerShell — это новая оболочка командной строки на основе задач и язык сценариев. Она специально разработана для...

DHCP vs. PowerShell 2.0
есть Windows Server 2008 r2 x64. есть не совсем маленькая сетка, где надо резервировать порядка 60 адресов в DHCP. понятное дело, что при...

Курсы Powershell
Добрый день, просьба посоветовать, с чего начать изучение powershell, где брать задания для программирования и есть ли какой-то курс,...

Powershell и 'globbing'
Можно ли с помощью каких либо опций заставить powershell для Windows вести себя, как unix-шеллы, то есть, заставить раскрывать аргументы...

Powershell + AutoIT
Коллеги, подскажите, как интегрировать команды AutoIT (функция send для эмуляции нажатия клавиш) в скрипт на Powershell?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru