Я пытаюсь создать сценарий PowerShell, где сначала я хочу проверить, запущена ли программа, а если нет, то приступайте к удалению определенных файлов. До сих пор я имею в виду следующее:
$Prog = «C:Program Files (x86)xyz.exe»
if ((Get-Process $Prog -EA SilentlyContinue) -eq $null) >
Remove-Item «C:Program Files (x86)abc123.xml»
Remove-Item «C:Program Files (x86)abc456.xml»
Но этот код удаляет файлы, даже если программа запущена. Таким образом, он игнорирует первые 2 (или 3) строки перед командами Remove-Item .
спросил(а) 2017-12-27T22:50:00+03:00 5 лет, 6 месяцев назад
добавить комментарий
пожаловаться
Проблема в два раза. Во-первых, Get-Process принимает имя процесса в параметре -Name не путь процесса. Это означает, что get-process $Prog -ea SilentlyContinue никогда не вернет процесс и всегда будет null. Вы можете использовать Get-ChildItem чтобы получить только имя процесса из полного пути.
Затем, если это необходимо для определенного пути, вы можете затем фильтровать с помощью свойства Path с Where-Object после возвращаемого объекта. Во-вторых, даже когда вы возвращаете процесс с Get-Process . Вам нечего приостанавливать выполнение в выражении if , поэтому он просто продолжит работу. Вы можете использовать while цикл и Start-Sleep Командлет, который позволит вам в цикле, пока процесс не был запущен.
Как установить приложения с помощью Powershell
$Prog = «C:Program Files (x86)xyz.exe»
$ProcessName = (Get-ChildItem $Prog).basename
while (!(Get-Process $ProcessName | Where-Object )) Start-Sleep 1
>
Remove-Item «C:Program Files (x86)abc123.xml»
Remove-Item «C:Program Files (x86)abc456.xml»
ответил(а) 2017-12-27T23:23:00+03:00 5 лет, 6 месяцев назад
добавить комментарий
пожаловаться
Еще в рубрике
Как выполнить скрипт powershell без кражи фокуса?
Установка EXE с конфигурационным файлом через Powershell
Как программно добавить PSCmdlet в конвейер Powershell?
Оператор типа Powershell не является коммутативным
Другие вопросы
Как правильно -фильтировать несколько строк в копии PowerShell script
Асинхронные процедуры
Regex для соответствия » — «только с одним набором из семи цифр
- Вопросы
- Powershell
- Как проверить, запущена ли программа перед удалением файлов в PowerShell?
Источник: progi.pro
Как проверить, установлен ли модуль powershell?
чтобы проверить, существует ли модуль, я пробовал следующие:
powershell prettyprint-override»>try < Import-Module SomeModule Write-Host «Module exists» >catch
Import-Module : The specified module ‘SomeModule’ was not loaded because no valid module file was found in any module directory. At D:keytalkSoftwareClientTestProjectsExporttest.ps1:2 char:5 + Import-Module SomeModule + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (SomeModule:String) [Import-Module], FileNotFoundException + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand Module exists
Я получаю ошибку, но никаких исключений не возникает, поэтому мы видим Module exists в конце концов, хотя SomeModule не существует.
Windows Powershell: Что это и как использовать? Основные команды 🖥️⚙️🧰
кто-нибудь знает хороший способ (желательно без генерации ошибки), чтобы определить, установлен ли модуль powershell в системе?
автор: Scott Weldon
5 ответов
нашел решение. Вы можете использовать на Get-Module :
if (Get-Module -ListAvailable -Name SomeModule) < Write-Host «Module exists» >else
автор: Klemens Schindler
опция ListAvailable не работает для меня. Вместо этого это делает:
if (-not (Get-Module -Name «»))
или, чтобы быть более лаконичен:
if (!(Get-Module «»))
автор: tloyd
просто пересмотрите это как что-то, с чем я только что столкнулся, и в ответах есть некоторые неправильные вещи (хотя он упоминается в комментариях).
во-первых, оригинальные вопросы задают, Как определить, установлен ли модуль Powershell. Нам нужно поговорить об установленном слове! Вы не устанавливаете модули Powershell (не так, как вы обычно устанавливаете программное обеспечение). Модули Powershell либо доступны (т. е. они находятся на пути модуля powershell), либо они импортируются (они импортируются в ваш сеанс, и вы можете вызвать содержащиеся в нем функции). Вот как проверить путь к модулю, если вы хотите знать, где хранить модуль:
$env:psmodulepath
Я бы сказал, что его все чаще использовать C:Program ФайлыWindowsPowerShellМодули; чаще всего из-за того, что он доступен всем пользователям, но если вы хотите заблокировать свои модули на свой собственный сеанс, включите их в свой профиль. C:Users%username%DocumentsWindowsPowerShellModules;
Хорошо, вернемся к двум Штатам.
доступен ли модуль (используя доступный для установки в исходном вопросе)?
Get-Module -Listavailable -Name
Это говорит вам, если модуль доступен для импорта.
— это модуль импорта? (я использую это как ответ на слово «существует» в исходном вопросе).
Get-module -Name
Это либо вернет пустую нагрузку ничего, если модуль не импортирован, или описание модуля в одной строке, если это так. Как всегда на SO, попробуйте команды выше на ваших собственных модулях.
автор: bytejunkie
модуль может находиться в следующих состояниях:
- импортные
- доступно на диске (или локальной сети)
- доступный в онлайн-галерее
Если вы просто хотите иметь проклятую вещь, доступную в сеансе PowerShell для использования, вот функция, которая сделает это или выйдет, если она не сможет это сделать:
function Load-Module ($m) < # If module is imported say that and do nothing if (Get-Module | Where-Object ) < write-host «Module $m is already imported.» >else < # If module is not imported, but available on disk then import if (Get-Module -ListAvailable | Where-Object ) < Import-Module $m -Verbose >else < # If module is not imported, not available on disk, but is in online gallery then install and import if (Find-Module -Name $m | Where-Object ) < Install-Module -Name $m -Force -Verbose -Scope CurrentUser Import-Module $m -Verbose >else < # If module is not imported, not available and not in online gallery then abort write-host «Module $m not imported, not available and not in online gallery, exiting.» EXIT 1 >> > > Load-Module «ModuleName» # Use «PoshRSJob» to test it out
IMHO, есть разница между проверкой, если модуль: 1) установлен, или 2) импортные:
чтобы проверить, если установлено:
$error.clear() Import-Module «» -ErrorAction SilentlyContinue If($error) Else
чтобы проверить, есть ли импортированы:
if ((Get-Module -Name «»)) < Write-Host «Module is already imported (i.e. its cmdlets are available to be used.)» >else
Источник: askdev.ru
Как быстро проверить версию «.NET Framework» в «Windows 10»?
Если пользователям необходимо определить версию программной платформы «.NET Framework» на используемом персональном компьютере под управлением операционной системы «Windows 10», то в данном руководстве мы покажем несколько возможных способов быстро получить востребованные сведения.
- Введение
- Как проверить версию «.NET Framework» с помощью приложения «Командная строка»?
- Как получить искомые ведения о версии «.NET Framework» с помощью приложения «Редактор реестра»?
- Как определить, присутствующую в операционной системе компьютера, версию «.NET Framework» с помощью приложения «Windows PowerShell»?
- Проверьте версию «.NET Framework» посредством задействования пользовательской команды
- Проверьте версию «.NET Framework» при помощи функции «DotNetVersionLister»
Введение
Стационарные настольные персональные компьютеры и ноутбуки в различном конфигурационном варианте конечного исполнения (нетбуки, ультрабуки, ноутбуки-трансформеры и т.д.), как наиболее массово представленные образцы современных компьютерных устройств, являются самыми востребованными вычислительными комплексами и применяются пользователями для выполнения высоко затратных операций и решения многих трудоемких задач на регулярной основе.
Для полноценного использования, заложенного производителями устройств, потенциала разно форматных компьютеров, управления всеми запущенными процессами и удобного взаимодействия пользователей необходимо наличие соответствующего программного обеспечения. Среди доступных вариантов от различных доверенных разработчиков особой популярностью, выраженной в наиболее массовом представлении на конечных образцах вычислительных устройств, пользуется операционная система «Windows» от корпорации «Microsoft», представленная пользователям, на сегодняшний день, в своей новейшей десятой версии.
Благодаря кроссплатформенной оболочке, высоким функциональным возможностям и удачному, дружественному к пользователям, интерфейсу, количество пользователей «Windows 10» неуклонно растет, и постоянно увеличивается число разнообразных совместимых сторонних приложений, разрабатываемых и внедряемых на основе данной системы.
В «Windows 10» по умолчанию присутствует «.NET Framework», собственная платформа разработки корпорации «Microsoft», состоящая из языков программирования, библиотек и инструментов, которые совокупно позволяют разработчикам создавать различные типы приложений для стационарных компьютеров, ноутбуков и планшетов, а также веб-приложений, игр и решать разнообразные специфические задачи.
Программная среда «.NET Framework» является открытой и кроссплатформенной, что означает ее полную поддержку основными популярными операционными системами «Windows», «Linux» и «Mac OS».
Хотя в большинстве случаев пользователям нет необходимости беспокоиться о номере версии «.NET Framework», установленной в системе «Windows 10», иногда, для запуска некоторых приложений, требуется определенный конкретный выпуск. Профессиональным программистам обычно требуется запускать несколько версий платформы для разработки и развертывания приложений, и именно в данном случае может пригодиться способ определения версий «.NET Framework», доступных в системе компьютерного устройства.
Так или иначе, какой бы ни была причина, пользователи могут воспользоваться как минимум тремя способами определения версии «.NET Framework», а именно с помощью командной строки, расширяемого средства автоматизации «PowerShell» или получить требуемые сведения в соответствующем реестре системы.
В данном руководстве по описанию возможностей операционной системы «Windows 10» мы покажем, как определить версию платформы «.NET Framework», установленную в пользовательском персональном компьютере.
Примечание. Данное руководстве ориентировано в основном на использование в операционной системе «Windows 10», но пользователи могут задействовать представленные методы также и в более ранних версиях системы, таких как «Windows 8.1» или «Windows 7».
Как проверить версию «.NET Framework» с помощью приложения «Командная строка»?
Чтобы проверить версию платформы «.NET Framework», установленную на пользовательском компьютерном устройстве под управлением операционной системы «Windows 10», пользователям предстоит выполнить следующий упорядоченный алгоритм простых пошаговых действий, напрямую задействующий возможности консоли командной строки, наделенной привилегированными правами администратора.
-
Откройте окно востребованной консоли, обладающей соответствующими дополнительными привилегиями для внесения системных изменений, одним из нескольких, доступных для использования в операционной системе «Windows 10», способов, максимально удобным для каждого конкретного пользователя или наиболее простым.
Например, нажмите на закрепленной «Панели задач» в нижнем левом углу рабочего стола на кнопку «Поиск», представленную в виде схематического символьного изображения «лупы», и откройте всплывающую поисковую панель. В отведенном поле введите фразу «Командная строка». После поиска совпадений, ответственный инструмент поисковой службы представит в разделе «Лучшее соответствие» искомый результат. Щелкните по нему правой кнопкой мыши и добейтесь отображения всплывающего контекстного меню, в котором, из перечня предлагаемых допустимых действий, выберите раздел «Запуск от имени администратора». Или в правом боковом меню поисковой панели щелкните левой кнопкой мыши доступный для взаимодействия одноименный раздел, и востребованное приложение «Командная строка» с привилегированными правами будет незамедлительно запущено.
Система обработает запрос и предоставит соответствующий структурированный перечень, содержащий искомую информацию.
Если пользователям необходимо убедиться в наличии установленной версии «4.x» (где «х» – изменяемый номер доступной сборки четвертой версии), то используйте следующий вариант команды (без граничных кавычек): «reg query “HKLMSOFTWAREMicrosoftNet Framework SetupNDPv4” /s», подтвердив исполнение запроса нажатием на клавиатуре на клавишу «Ввод».
Выполнив предложенный упорядоченный алгоритм простых пошаговых действий, пользователи мгновенно узнают все представленные версии платформы «.NET Framework», полноценно функционирующие в компьютерном устройстве.
Как получить искомые ведения о версии «.NET Framework» с помощью приложения «Редактор реестра»?
Чтобы воспользоваться для определения, задействованной на персональном компьютере под управлением операционной системы «Windows 10», версии программной платформы «.NET Framework» посредством доступных возможностей служебного встроенного системного приложения «Редактор реестра», пользователям предстоит осуществить следующий пошаговый алгоритм простых упорядоченных действий.
Примечание. Необходимо помнить, что любые действия с реестром могут привести к нежелательным результатам, в следствие которых могут перестать функционировать отдельные службы, системные инструменты, встроенные приложения или программы сторонних разработчиков, возникнут единичные или множественные ошибки, неполадки, сбои и даже полный крах операционной системы. Чтобы избежать развития негативного сценария, создайте удаленный резервный архив важных системных и пользовательских файлов или всей системы, при соответствующей возможности, на удаленном запоминающем устройстве, задействуя любой удобный инструмент для резервного копирования данных.
-
Открыть приложение «Редактор реестра» можно многими различными способами. Но наиболее быстрый и удобный из доступных для взаимодействия вариантов подразумевает использование возможностей диалогового окна «Выполнить». Нажмите совместно комбинацию клавиш «Windows + R» и откройте востребованное окно.
В исполняемом поле «Открыть» введите следующую команду: «regedit», а затем нажмите на кнопку «ОК» или клавишу «Ввод» на клавиатуре, запустив ее выполнение. Ответственная служба мгновенно произведет запуск и отобразит окно искомого приложения «Редактор реестра».
Подсказка. В более ранних выпусках версий «.NET Framework» искомая информация о номере выпуска будет располагаться в разделе, озаглавленном числовым коэффициентом или названием «Setup», вместо раздела «Client». Например, директория «.NET Framework» версии «3.5» содержит искомый раздел под номером «1033», в то время как версия «3.0» представлена разделом «Setup».
Как определить, присутствующую в операционной системе компьютера, версию «.NET Framework» с помощью приложения «Windows PowerShell»?
Если пользователи в операционной системе «Windows 10» используют встроенное расширяемое средство автоматизации от корпорации «Microsoft» с открытым исходным кодом «Windows PowerShell», предпочитаемо заданное по умолчанию, то можно воспользоваться несколькими методами определения востребованных версий программной платформы «.NET Framework» на персональном компьютерном устройстве, включая возможности исполняемого сценария или установки модуля инструмента командной строки.
Проверьте версию «.NET Framework» посредством задействования пользовательской команды
Чтобы использовать доступный системный инструмент «Windows PowerShell» для определения искомых версий «.NET Framework», пользователям потребуется выполнить следующий пошаговый алгоритм простых упорядоченных действий.
-
Воспользуйтесь наиболее подходящим, удобным, привычным или понравившемся способом и произведите запуск приложения «Windows PowerShell» с привилегированными правами администратора для выполнения сценария повышенной ответственности.
Например, нажмите на закрепленной «Панели задач» в нижнем левом углу рабочего стола на кнопку «Пуск», выполненную в виде схематического изображения «проекции окна», и откройте главное пользовательское меню «Windows». В основном упорядоченном перечне, установленных в системе компьютера, служебных инструментов и программ сторонних разработчиков найдите, задействуя колесо вращения компьютерной мыши или ползунок полосы прокрутки меню, и откройте раздел «Windows PowerShell». В открывшемся вложенном дополнительном меню отыщите и щелкните правой кнопкой мыши одноименный раздел «Windows PowerShell» для мгновенного отображения всплывающего контекстного меню. Из списка допустимых действий выберите раздел «Дополнительно», открывающий новое добавочное скрытое меню, в котором нажмите на требуемый раздел «Запуск от имени администратора», незамедлительно запускающий востребованное приложение «Windows PowerShell» с привилегированными правами.
Или выберите сразу (при соответствующем наличии) исполняемый раздел «Запуск от имени администратора» в выделенной области «Задачи» всплывающего контекстного меню.
Проверьте версию «.NET Framework» при помощи функции «DotNetVersionLister»
В качестве альтернативного варианта, пользователи могут воспользоваться функциональным инструментом, предлагаемым сообществом разработчиков «GitHub», который позволяет легко запрашивать и отображать список установленных версий «.NET Framework» на задействуемом компьютере.
Чтобы узнать список версий «.NET Framework», установленных в операционной системе «Windows 10», пользователям предстоит выполнить следующий алгоритм простых упорядоченных и последовательных действий.
-
Осуществите запуск приложения «Windows PowerShell», используя представленный в предыдущем разделе или другой доступный и комфортный способ. Например, щелкните правой кнопкой мыши по кнопке «Пуск», расположенной на закрепленной «Панели задач» в нижнем левом углу рабочего стола и представленную графическим символьным изображением «проекции окна», или нажмите совместно комбинацию клавиш «Windows + X» и откройте востребованное меню «Опытного пользователя». В представленной всплывающей панели отыщите, из доступного для использования перечня разрешенных действий, и выберите раздел «Windows PowerShell (администратор)», мгновенно открывающий востребованное одноименное приложение, наделенное соответствующими привилегиями.
Источник: hetmanrecovery.com