Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Автоматизировать отключение и включение оборудования

Ответить
Настройки темы
Любой язык - Автоматизировать отключение и включение оборудования

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте. Сразу скажу что я далек от темы программирования и прошу простить за предстоящие глупые вопросы.
Суть собственно вот в чем. Нужно при старте системы отключить и подключить оборудование например с айди USB\VID_0955&PID_9000. И все.
Желательно в свернутом виде виде без всплывающих окон командных строк (но это необязательно)

Отправлено: 14:11, 04-03-2025

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6632
Благодарности: 1531

Профиль | Отправить PM | Цитировать


Почитайте про команды Powershell
Get-PnpDevice - получение информации об устройствах
Disable-PnpDevice - отключение
Enable-PnpDevice - включение

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:13, 04-03-2025 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Получилось решить так

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))

{
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
-Confirm:$false
}
disable-PnpDevice -InstanceId 'HDAUDIO\FUNC_01&VEN_10EC&DEV_0897&SUBSYS_14629D48&REV_1005\4&E112F93&0&0001' -Confirm:$false
enable-PnpDevice -InstanceId 'HDAUDIO\FUNC_01&VEN_10EC&DEV_0897&SUBSYS_14629D48&REV_1005\4&E112F93&0&0001' -Confirm:$false

Осталось решить как это хозяйство запускать незаметно. С атрибутом -WindowStyle Hidden окно все равно появляется на секунду

Отправлено: 08:49, 06-03-2025 | #3


Аватара для Anton04

Ветеран


Сообщения: 2174
Благодарности: 408

Профиль | Отправить PM | Цитировать


Цитата Wicked43:
Осталось решить как это хозяйство запускать незаметно. »
Банально от другой учётной записи посредством планировщика задач.

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Отправлено: 09:13, 06-03-2025 | #4


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6632
Благодарности: 1531

Профиль | Отправить PM | Цитировать


Костыль скрытого запуска .ps1 через .vbs
Код: Выделить весь код
command = "powershell.exe -nologo -command C:\temp\script.ps1"
set shell = CreateObject("WScript.Shell")
shell.Run command,0

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:55, 06-03-2025 | #5


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1221
Благодарности: 511

Профиль | Отправить PM | Цитировать


Цитата Wicked43:
Осталось решить как это хозяйство запускать незаметно. »
ещё вариант:
C#
hide.exe
Код: Выделить весь код
using System;
using System.Diagnostics;
using System.Windows;

namespace hide
{
    class Program
    {
        static void Main(string[] args)
        {
            string st = "", ar = "";
            if (args.Length == 0)
                MessageBox.Show("фигассе, а параметры кто будет задавать?:)");
            else
            {
                st = args[0];
                for (int i = 1; i < args.Length; i++) {
                    ar += " " + args[i];
                }

                ProcessStartInfo startInfo = new ProcessStartInfo
                {
                    FileName = st,
                    WindowStyle = ProcessWindowStyle.Hidden,
                    //аргументы
                    Arguments = ar
                };
                //запуск процесса
                Process.Start(startInfo);
           }
        }
    }
}
Пример запуска с параметрами:
Код: Выделить весь код
d:\TEST1\hide.exe powershell.exe -c "d:\TEST1\script.ps1 -d 'Intel(R) Ethernet Connection (11) I219-V'"
- использовать в батниках лучше с абсолютными путями, т.к. при запуске от имени администратора текущий каталог изменяется.

ЗЫ Если будут проблемки с компиляцией, могу помочь...

а это скрипт, с возможностью автоопределения, что требуется сделать с устройством (выкл/вкл), если не указывать значение аргумента -type:
powershell
script.ps1
Код: Выделить весь код
param([string]$device,[string]$type)

# если запущен не от имени админа:
if (
	!([security.principal.windowsprincipal]`
	[security.principal.windowsidentity]::getcurrent()).isinrole([security.principal.windowsbuiltinrole]`
	"Administrator")
) {
    saps powershell.exe "-nop -exe Bypass -f `"$PSCommandPath`" -dev `"$device`" -t `"$type`"" -verb RunAs
    exit
}

# получаем устройство:
$d = get-pnpdevice |?{$_.friendlyname -like $device -or $_.instanceid -like $device}
$d

# автовыбор противоположного действия текущему состоянию:
if($type -ne "enable" -and $type -ne "disable") {
    if($d.status -eq 'OK') {$type = "disable"}else {$type = "enable"}
}

if ($type -eq "enable") {
    "Включаем $($d.friendlyname)"
    $d | enable-pnpdevice -confirm:$false
} elseif ($type -eq "disable") {
    "Выключаем $($d.friendlyname)"
    $d | disable-pnpdevice -confirm:$false
}
sleep -s 2
- устройство можно задавать как по friendlyname, так и по instanceid

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 06-03-2025 в 20:24. Причина: поправил строку запуска. В таком виде можно использовать в батнике

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:47, 06-03-2025 | #6


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1221
Благодарности: 511

Профиль | Отправить PM | Цитировать



А это скомпилированный файлик (для Net Framework 4.8.1)
hide.zip

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:30, 06-03-2025 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Автоматизировать отключение и включение оборудования

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Мышь - [решено] Отключение и включение мыши Derentius Прочее железо 9 06-06-2017 23:50
Разное - Отключение-включение клавиатуры скриптом Moneton Microsoft Windows 10 7 15-02-2016 01:30
Циклическое включение и отключение ПК gO0gler@twitter Материнские платы и память 4 02-02-2016 11:00
Разное - Кратковременное отключение оборудования FatherFreeman Microsoft Windows 7 20 23-10-2013 01:15
CMD/BAT - Отключение и включение звука FallenArh Скриптовые языки администрирования Windows 3 03-03-2013 19:51




 
Переход