Skocz do zawartości


tablety.pl
Zdjęcie

Skrypt do resetowania urządzeń




  • Zamknięty Temat jest zamknięty
25 odpowiedzi w tym temacie

#1 x33

x33

    First Rank

  • Na emeryturze
  • 16 postów

Napisano 07 02 2010 - 22:59

Witam.

Czy jest możliwe napisanie skryptu, który wyłączy, a następnie włączy wybrane urządzenie?

Póki co, udało mi się "wychwycić" wpisy, które się zmieniają po wyłączeniu urządzenia (w tym przypadku to bateria).
Poniżej przedstawiony jest wpis rejestru, który z założenia miał zmienić wartości wpisów z 0 na 1.
CODE-BOX
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\ACPI\ACPI0003\0\Control]
"DisableCount"=dword:1

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\0001\System\CurrentControlSet\Enum\ACPI\ACPI0003\0]
"CSConfigFlags"=dword:1

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\Current\System\CurrentControlSet\Enum\ACPI\ACPI0003\0]
"CSConfigFlags"=dword:1

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\ACPI0003\0\Control]
"DisableCount"=dword:1

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Enum\ACPI\ACPI0003\0]
"CSConfigFlags"=dword:1

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Enum\ACPI\ACPI0003\0]
"CSConfigFlags"=dword:1

Problem polega na tym, że tych wpisów nie da się zmienić ręcznie, ale zmieniają swoje wartości (z 0 na 1) po wyłączeniu urządzenia w menedżerze urządzeń (windows xp)

Prawie w ogóle się na tym nie znam, ale przyjmę każdą pomoc!

#2 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 08 02 2010 - 08:23

Ty chcesz włączać/wyłączać każde urządzenie? A powiedz mi czy CI podpasuje Menedżera urządzeń w wierszu poleceń DevCon. Możesz nim robić to samo co w normalnym Menedżerze urządzeń, włączać/ wyłączać , usuwać urządzenia. Później zmontować skrypt bat. Zakładam ze Twój system to Windows XP. I jeszcze mi napisz jakie urządzenia chcesz resetować.

#3 x33

x33

    First Rank

  • Na emeryturze
  • 16 postów

Napisano 08 02 2010 - 08:50

Potrzebuje zresetować kartę WiFi ASUS 802.11g.

A jak to zrobić na Windows 7?

#4 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 08 02 2010 - 09:49

Ok. Myślę sobie tak, zrobić to z poziomu kosnoli wmic i podmontować do tego skrypt bat lub użyć gotowego skryptu PowerShell.

1) Uruchom wiersz poleceń Jako Administrator > wyszukaj CMD, prawoklik > uruchom jako > Administrator.

Następnie zrób listing urządzeń, w wierszu poleceń wpisz:

wmic path win32_networkadapter > C:\lista.txt

Plik z zapisanymi danymi będzie się znajował na dysku C pod nazwą lista. Wklej mi nazwę urządzenia, które chcesz zresetować.

2) Jest gotowy skrypt PowerShell resetowania Wireless Network Adapter. Skopiuj kod, wklej do notatnika. Zapisz jako: Reset-Wlan.ps1 . Żródło: How To Reset A Wireless Network Adapter?

# NAME
#	 Reset-Wlan.ps1
#
# SYNOPSIS
#	 Disables, pauses, and then enables the wlan adapter
#
# SYNTAX
#	 .\Reset-Wlan.ps1
#
# REMARKS
#	 Run this script elevated
#
# AUTHOR
#	 Frank-Peter Schultze www.fpschultze.de
#
# DATE
#	 15-Mar-2009
#
$wlan = Get-WmiObject -Class Win32_NetworkAdapter -Filter "Name LIKE '%wireless%'"
$wlan.Disable()
# Maybe waste of time. Never mind!
Start-Sleep -Seconds 10
$wlan.Enable()

Był testowany w systemie Vista, ale nie powinno być problemu z działaniem bo posługuje się wmi, tak samo jak kosnola wmic. Następnie wklej skrypt do lokalizacji C:\Windows\System32.

3) Kolejnie musisz wejść do Kosnoli PowerShell -> uruchom > powershell.exe.

4) 1 raz użyta konsola ma domyślnie nałożone ograniczenie - blokadę uruchamiania skryptów, więc musisz ją odblokować:
- wpierw sprawdź czy jest faktycznie nałozona blokada, wklej to:
Get-ExecutionPolicy

Musi widnieć status Restricted (blokada)

- Zdejmujesz blokadę:
Set-ExecutionPolicy Unrestricted

Jeśli chcesz sprawdzić opcjonalnie czy blokada została zdjęta ponownie wpisz:
Get-ExecutionPolicy
Musi widnieć status Unrestricted

Następnie uruchom skrypt, możesz wpisać całą nazwę Reset-Wlan.ps1 (enter) lub frazę poczatkową Reset-(wciskaj klawisz tab, a nazwa zostanie automatycznie uzupełniona) - (enter). Przedstaw wyniki działania skryptu. Jeśli coś pójdzie nie tak wykonaj mi log z konsoli wmic (Punkt 1) i zrobimy to na tej konsoli, jak możesz jeśli będzie jakiś błąd to przedstaw go lub daj screena.


EDIT
Jeśli skrypt Reset-Wlan.ps1 działa tak jak chcesz to aby uprościć uruchamianie go, można wykonać takie coś, bo też pewnie reset wymaga u Ciebie wyższych uprawnień:

Montujesz taki skrypt bat: ResetLan.bat

@echo off
Runas  /user:administrator "powershell.exe  -noexit -command C:\Windows\System32\Reset-Wlan.ps1"

W pierwszej kolejności konsola poprosi Cię o wpisanie Hasła, aby uruchomić skrypt z uprawnieniami administratora, wydaje mi się ze monit o hasło jest wskazany po to by ktoś przypadkiem CI nie mieszał,a tak nie znając hasła nic nie zrobi.

Dołączona grafika

Po wpisaniu hasła i zatwierdzenia okno kosnoli znika po czym zostaje uruchomiony skrypt w PowerShellu.

Dołączona grafika

opcjonalnie paramter
-noexit
Aby po wykonaniu operacji okno konsoli nie zostało zamknięte. Na samym końcu podajesz pełną ścieżkę do skryptu. Wydaje mi się że takie rozwiązanie uprości Ci o wiele życie.

Użytkownik Kolega Dudysa edytował ten post 08 02 2010 - 12:12


#5 x33

x33

    First Rank

  • Na emeryturze
  • 16 postów

Napisano 08 02 2010 - 16:46

Podczas uruchamiania skryptu pojawia się błąd:

Dołączona grafika

Co do tego lista.txt, nie mogę go wysłać, bo na tym forum nie ma opcji wysyłania załączników. Urządzenie, które chcę wyłączyć to:

ASUS WL-136 V2

Win32_NetworkAdapter
Karta sieciowa ASUS 802.11g
Połączenie sieci bezprzewodowej 2
BCM43XX

#6 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 08 02 2010 - 17:12

Hmm, wklej log na Wklej. Daj link. I zaraz postaram się zrobić to za pomocą wmic.

#7 x33

x33

    First Rank

  • Na emeryturze
  • 16 postów

Napisano 08 02 2010 - 20:15

Lista.txt na wklej.pl

#8 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 08 02 2010 - 20:35

Dobrze.

1) Uruchom wiersz poleceń na razie na swoim koncie bez wyższych uprawnień, zobaczymy czy zresetuje:
uruchom > CMD

W wierszu poleceń wklej to:

wmic path Win32_NetworkAdapter WHERE Name='Karta sieciowa ASUS 802.11g' call Reset

Konsola zwróci albo info o braku uprawnień albo zapytanie dla potwierdzenia wykonania operacji:
Dołączona grafika

Jeśli operacja wymaga wyższych uprawnień, uruchamiasz wiersz poleceń jako administrator:
uruchom > Runas /user:administrator cmd
Następnie znowu wklejasz do konsoli powyższy kod. Konsola po wykonaniu pomyślnej operacji powinna zwrócić wartość 1 lub 0, jeśli wartość jest wyższa to moze oznaczać to że żądanie nie jest u Ciebie obsługiwane lub jeszcze jakiś inny powód.

Jeśli wszytsko zakończy się pomyślnie stwórz plik BAT, np. ResetLan.bat a wnim wklej to:

@echo off
Runas  /user:administrator "cmd /k wmic path Win32_NetworkAdapter WHERE Name='Karta sieciowa ASUS 802.11g' call Reset"

Wystarczy podac hasło admina, następnie potwierdzić reset urządzenia. Napisz jak działa.

#9 x33

x33

    First Rank

  • Na emeryturze
  • 16 postów

Napisano 08 02 2010 - 20:42

A mi wyszło coś takiego:

C:\Windows\system32>wmic path Win32_NetworkAdapter WHERE Name='Karta sieciowa AS
US 802.11g' call Reset
Executing (\\X2\root\cimv2:Win32_NetworkAdapter.DeviceID="7")->Reset()
ERROR:
Description = This method is not implemented in any class

EDIT:

Plik .bat wywalił taki błąd:

Wpisz hasło dla administrator:
Trwa podejmowanie próby uruchomienia cmd /k wmic path Win32_NetworkAdapter WHERE
 Name='Karta sieciowa ASUS 802.11g' call Reset przez użytkownika "X2\administrat
or" ...
BŁĄD PROGRAMU RUNAS: Nie można uruchomić - cmd /k wmic path Win32_NetworkAdapter
 WHERE Name='Karta sieciowa ASUS 802.11g' call Reset
1326: Błąd logowania: nieznana nazwa użytkownika lub nieprawidłowe hasło.
 Aby kontynuować, naciśnij dowolny klawisz . . .


#10 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 08 02 2010 - 20:56

Co do 1)

This method is not implemented in any class

Oznacza to to że metoda jest, ale tylko jest i nic więcej: Ta metoda nie jest zaimplementowana w żadnej klasie, czyli można się wkurzyć.

Co do 2)
To może wpisałeś źle hasło administratora, ale jeśli to 1 nie działa to to 2 nie ma już większego znaczenia. Gdzieś czytałem że DevCon w Win7 32 bit działa, ale muszę się Piki zapytać. To w tedy tym coś się uda zrobić. O ile masz system 32 bit, post będe edytował z odpowiedzią.

#11 x33

x33

    First Rank

  • Na emeryturze
  • 16 postów

Napisano 09 02 2010 - 06:59

właśnie mam... 64bitowy xD

Ostatecznie mogę się przesiąść na 32 bit... albo zainstalować na innej partycji triala 32bit i sprawdzić, czy tam by metoda na DevCona działała.

#12 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 09 02 2010 - 08:48

Widzisz, gdzieś przczytałem że DevCon działa w systemach 32 bitowych. Picasso również twierdzi że powinno działać, ale nie zostało to przez nikogo przetestowane. Pozatym nie lepiej, jeśli masz dostęp gdzieś do Win7 32 tam to przetestować?

#13 x33

x33

    First Rank

  • Na emeryturze
  • 16 postów

Napisano 09 02 2010 - 13:00

Mogę, w maszynie wirtualnej.
Jak zauważyłeś w logu lista.txt, mam program VirtualBox. W instalatorze windows 7 można wybrać edycję 64 i 32 bitową, więc po zamontowaniu maszyny wirtualnej mogę to sprawdzić...

EDIT

Tak w ogóle potrzebuję resetować kartę sieciową po zalogowaniu, bo po uruchomieniu systemu nie chce działać (nie wykrywa sieci, nie może się z nią połączyć). Gdy wyłączam i włączam urządzenie w menedżerze urządzeń to po tym działa OK.
Chciałbym jakoś zautomatyzować ten proces.

#14 x33

x33

    First Rank

  • Na emeryturze
  • 16 postów

Napisano 09 02 2010 - 14:07

Już sprawdziłem.

Na XP Devcon działa normalnie. można używać poleceń typu "devcon help", czy "devon driverfiles *", a odpowiedź wyświetlana jest w tym samym wierszu polecenia.

Na Windows 7 32bit narzędzie działa już dziwnie. Reaguje na w/w polecenia, ale odpowiedź wyswietlana jest w nowym wierszu polecenia i znika po wykonaniu zadania (nie wiem jak to lepiej powiedzieć).
W Windows 7 x64 to samo... Ale niby działa.

#15 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 09 02 2010 - 14:18

Tak w ogóle potrzebuję resetować kartę sieciową po zalogowaniu, bo po uruchomieniu systemu nie chce działać (nie wykrywa sieci, nie może się z nią połączyć). Gdy wyłączam i włączam urządzenie w menedżerze urządzeń to po tym działa OK.
Chciałbym jakoś zautomatyzować ten proces.


Troche to zmienia postać rzeczy bo powód tego zachowania jakiś musi być. Na razie temat zostawiam tu, ale prawdopodobnie powinien zostać przeniesiony do odpowiedniego działu. Wpierw sprawdźmy to.

W poście 2) masz link do narzędzia DevCon, pobierz je. Następnie wypakuj, wejdź do folderu devcon\i386, skopuij narzędzie DevCon do C:\Windows\System32.

1) Wpierw użyj narzędzia bez wyłączonego UAC. W wierszu polecenia wpisujesz, wykonałem restart własnej karty:

devcon restart =net PCI\*

Będzie to wyglądało tak:
Dołączona grafika

Po pomyślnie udanej operacji konsola zwróci informacje o restarcie w postaci nr. ID Twojego urządzenia, dla Twojej karty musi zwrócić id:
PCI\VEN_14E4&DEV_4318&SUBSYS_100F1043&REV_02\4&278CCF74&0&00F0

Jeśli będą występowały problemy z UAC, proszę go wyłączyć.


EDIT:
Nie sprawdzaj w 64bit.

Użytkownik Kolega Dudysa edytował ten post 09 02 2010 - 14:36





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych