Jak ominąć blokowanie komputera?

Dzisiejszy świat to nowe wyzwania i nowe problemy. Zarówno dla pracodawców jak i pracowników. Gdy siedzimy w biurze, gdzie jest masa ludzi, a zdarzają się też osoby postronne, to auto-blokowanie ekranu po 10 czy 15 minutach bezczynności ma pewien sens. Jednk obecne czasy dla wielu osób to praca z domu, gdzie największym zagrożeniem, dla poufnych danych może być dziecko (jak już skończy zdalne lekcje), prartnerka (o ile będzie miała przerwę w pracy zdalnej), albo pies, ewentualnie kot. Czy da się ominąć automatyczne blokowanie się komputera bez zbytniej ingerencji w ustawienia komputera?

Odpowiedź brzmi – OCZYWIŚCIE!

Nawet więcej – działa na każdym komputerze z każdym systemem Windows. Potrzebny tylko notatnik i możliwość uruchomienia PowerShell (nawet w kontekście użytkownika). Otwieramy więc notatnik i piszemy takie oto malutkie cudo:

Param($Czas = 60)
$MyShell = New-Object -ComObject "Wscript.Shell"
For ($i = 0; $i -lt $Czas; $i++) {
  $MyShell.SendKeys('{NUMLOCK}')
  Start-Sleep -Seconds 60
}

Co robi skrypt? Otóż wysyła do komputera co minutę sygnał przyciśnięcia klawisza NumLock – innymi słowy klawiatura numeryczna, co minutę będzie raz działała, raz nie działała. Zapisujemy jako moj_skrypt.ps1 i wywołujemy z PowerShella:

C:\sciezka\do\pliku\moj_skrypt.ps1 

Domyślnie – nasz skrypt będzie działał przez godzinę, ale wiadomo, że potrzeba matką wynalazków 😉 i skoro nasz skrypcik jest już sparametryzowany, to wystarczy uruchomić go z parametrem określjącym ilość minut przez jakie ma działać 🙂 np. dla 10 godzin:

C:\sciezka\do\pliku\moj_skrypt.ps1 600

Oczywiście nie zalecamy, aby traktować to jako „symulowanie” pracy zdalnej 😉

Piotr Berent

Piotr Berent od 2002 w pocie czoła pracujący w środowisku IT, obecnie freelancer - Inżynier Systemowy. Entuzjasta wirtualizacji, automatyzacji i rozwiązań opartych o narzędzia open-source.

13 komentarzy

  1. Ryszard pisze:

    A jeśli zamienimy:
    $MyShell.SendKeys('{NUMLOCK}’)
    na:
    $MyShell.SendKeys('{NUMLOCK}’)
    $MyShell.SendKeys('{NUMLOCK}’)
    to nawet klawiatura numeryczna zawsze będzie działać jak powinna 🙂

  2. CashMaker pisze:

    Cześć

    Coś nie działa ten skrypcik taki poniższy komunikat otrzymuje:

    i++ : The term 'i++’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the s
    pelling of the name, or if a path was included, verify that the path is correct and try again.
    At U:\auto_key.ps1:3 char:28
    + For ($i = 0; $i -lt $Czas; i++) {
    + ~~~
    + CategoryInfo : ObjectNotFound: (i++:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

  3. CashMaker pisze:

    Cześć znalazłem błąd w twoim skrypcie – brakuje. $i++ i dlatego zgłaszało bł.

  4. Andrzej pisze:

    Literówka w linii 3. Zabrakło hajsu = $ 🙂

  5. Ra d:-) pisze:

    Można tak… a można też uruchomić windows media player i w pętli odtwarzać krótki flmik 🙂

    • Piotr Berent pisze:

      No chyba, że pracodawca monitoruje uruchomione procesy 😉 z powershella prościej się wytłumaczyć niż z mediaplayera 😉

  6. marekder pisze:

    is not recognized as an internal or external command,
    operable program or batch file.

  7. Jak mam podpisać? pisze:

    At ********ps1:3 char:34
    + For ($i = 0; $i -lt $Czas; $i++) {
    + ~
    Missing closing ’}’ in statement block or type definition.
    + CategoryInfo : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : MissingEndCurlyBrace

    • Piotr Berent pisze:

      Wygląda na to, że pominęłaś/pominąłeś ostatni } w ostatniej linii 😉

  8. Wojtek pisze:

    Niestety nie uda się ten trik:
    „cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at ttps:/go.microsoft.com/fwlink/?LinkID=135170.”

Leave a Reply