Hogyan javítható a Windows PowerShell „Végrehajtási házirend: Korlátozott” hiba

A Windows PowerShell „Végrehajtási házirend: Korlátozott” hibájának legbiztonságosabb javítása nem az, hogy bemásolod a legszélesebb körű parancsot, amit találsz. Először azonosítsd, melyik végrehajtási házirend a ténylegesen érvényes, majd válaszd ki a legszűkebb körű változtatást, amely megfelel annak, amit futtatni szeretnél.

A Microsoft jelenlegi dokumentációja is hangsúlyozza a verziókontextus fontosságát. A Windows PowerShell 5.1 dokumentációja a Korlátozott (Restricted) értéket sorolja fel alapértelmezett végrehajtási házirendként a Windows kliensszámítógépeken. A jelenlegi PowerShell 7.6 dokumentáció a Alapértelmezett (Default) értéket a Windows rendszeren RemoteSigned-ként definiálja. Ha azonban minden hatókör Undefined (Nem definiált), a Microsoft továbbra is a Korlátozott (Restricted) értéket dokumentálja a Windows klienseken érvényes tartalékértékként. A gyakorlati tanulság egyszerű: ne következtess a házirendre a Windows verziójából vagy egy útmutatóból. Futtasd a házirend-parancsokat azon a gépen, ahol a hiba jelentkezik.

Ez az útmutató összehasonlítja a fő javítási lehetőségeket hatókör, tartósság, adminisztratív hatás és bizalmi modell szerint. A cél az, hogy egy jogos szkriptet futtassunk anélkül, hogy a rendszert a szükségesnél jobban gyengítenénk.

Mit jelent valójában a Korlátozott hiba

A Korlátozott (Restricted) házirend mellett a PowerShell engedélyezi az egyedi parancsokat, de nem teszi lehetővé szkriptfájlok futtatását. Ez magában foglalja a PowerShell szkripteket és a kapcsolódó konfigurációs vagy modul-szkript fájlokat. A Microsoft a végrehajtási házirendet olyan biztonsági funkcióként írja le, amely szabályozza a szkriptek és konfigurációs fájlok betöltésének feltételeit. Ez nem biztonsági határ; a Microsoft kifejezetten megjegyzi, hogy a felhasználó továbbra is gépelhet parancsokat interaktív módon. Olvasd el a jelenlegi about_Execution_Policies dokumentációt a PowerShell 7.6-hoz és a Windows PowerShell 5.1 végrehajtási házirend dokumentációt.

Windows PowerShell konzol, amely egy script.ps1 fájlt blokkol, mert a szkriptek futtatása le van tiltva a rendszeren

A gyakori hiba azt jelzi, hogy a .ps1 fájl nem tölthető be, mert a szkriptek futtatása le van tiltva; rögzítsd a pontos üzenetet, mielőtt megváltoztatnád a házirendet.

Ez a különbségtétel fontos. A végrehajtási házirend segíthet megakadályozni a véletlen szkriptfuttatást, de a RemoteSigned vagy Bypass beállítása nem teszi megbízhatóvá a szkriptet. Először vizsgáld felül a szkriptet és annak forrását.

1. lépés: azonosítsd az érvényes házirendet és minden hatókört

Futtasd ezt a két parancsot:

Get-ExecutionPolicy

Get-ExecutionPolicy -List

Az első visszaadja az aktuális munkamenet érvényes házirendjét. A második felsorolja a MachinePolicy, UserPolicy, Process, CurrentUser és LocalMachine hatókörökben alkalmazott házirendeket. A Microsoft kifejezetten a Get-ExecutionPolicy -List parancsot ajánlja a munkamenetet befolyásoló házirendek megtekintésére. Lásd: Get-ExecutionPolicy.

Windows PowerShell, amely a Get-ExecutionPolicy -List parancs kimenetét jeleníti meg a MachinePolicy, UserPolicy, Process, CurrentUser és LocalMachine hatókörökkel

Ellenőrizd az összes hatókört ahelyett, hogy feltételeznéd, hogy a LocalMachine érték az, amely irányítja a munkamenetet.

Ha a MachinePolicy vagy a UserPolicy definiált, állj meg, mielőtt helyi kerülő megoldást próbálnál kikényszeríteni. Ezek az értékek a Csoportos házirendből (Group Policy) származnak, és felülírhatják a PowerShell-lel végrehajtott végrehajtási házirend-beállításokat. Egy kezelt munkaszámítógépen a helyes következő lépés általában a szervezet folyamatának követése vagy az IT részleggel való kapcsolatfelvétel.

Válaszd ki a javítást az igények, ne a legrövidebb parancs alapján

OpcióTartósságAdminisztratív jogosultságokFő kompromisszumLegjobb illeszkedés
Unblock-File a RemoteSigned használata mellettFájlspecifikusÁltalában nincs szükség emelt szintű jogosultságra a saját fájlodhozKifejezetten megbízol egy letöltött fájlban; más letöltött, aláíratlan fájlok továbbra is a RemoteSigned szabályai alá esnekEgy felülvizsgált szkript, amelyet az internetről töltöttél le
Process RemoteSignedCsak az aktuális PowerShell folyamatNincs LocalMachine változtatásAlacsony tartósság, de a letöltött, aláíratlan fájloknak továbbra is szükségük lehet a blokkolás feloldásáraIdeiglenes fejlesztési vagy hibaelhárítási munkamenet
CurrentUser RemoteSignedTartós az Ön felhasználói fiókjáhozNem igényli az összes felhasználó megváltoztatásátKényelmes a rendszeres helyi szkripteléshez; szélesebb körű, mint egy munkamenet-változtatásSzemélyes fejlesztői munkállomás
LocalMachine RemoteSignedTartós az összes felhasználó számáraEmelt szintű jogosultságot igényelSzélesebb hatás a számítógépenMegosztott gép, ahol egy rendszergazda szándékosan ugyanazt a házirendet szeretné az összes felhasználó számára
AllSignedFügg a hatókörtőlFügg a hatókörtőlAláírásokat követel meg még a helyileg létrehozott szkriptekhez is; tanúsítványi és aláírási munkafolyamat többletköltséggel járSzervezetek kódaláírási folyamattal
BypassFügg a hatókörtől; gyakran Process hatókörben használjákFügg a hatókörtőlNincs szkriptblokkolás, figyelmeztetés vagy megerősítés a végrehajtási házirendtőlIrányított automatizálás saját bizalmi és biztonsági modellel, nem laza állandó beállítás

2. lépés: használj adminisztrátori jogosultságot csak gépszintű változtatáshoz

Nem kell emelt szintű PowerShellt nyitnod pusztán a CurrentUser vagy Process hatókör megváltoztatásához. A Microsoft azt állítja, hogy emelt szintű jogosultság szükséges a helyi számítógép házirendjének megváltoztatásakor, ami a LocalMachine-t jelenti. Ez hasznos kompromisszum: ha csak az Ön felhasználói fiókjának van szüksége helyi szkriptelésre, az összes felhasználó házirendjének megváltoztatása hatókört ad hozzá előny nélkül.

Windows keresési eredmények a Windows PowerShell-re, a Futtatás rendszergazdaként opció kiemelve

A „Futtatás rendszergazdaként” megfelelő egy szándékos LocalMachine változtatáshoz, de szükségtelen a Process vagy CurrentUser hatókörhöz.

Javaslat igény szerint: használj CurrentUser-t egy fejlesztői fiókhoz, amely rendszeresen futtat helyileg készített szkripteket. Tartsd fenn a LocalMachine-t egy olyan rendszergazdának, aki szándékosan ugyanazt a beállítást szeretné az összes felhasználóra kiterjeszteni.

3. lépés: rendszeres helyi szkripteléshez fontold meg a CurrentUser RemoteSigned beállítást

Sok személyes fejlesztői gépen egy gyakorlati tartós választás a következő:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

A RemoteSigned lehetővé teszi a helyi szkriptek futtatását aláírás nélkül, míg az internetről letöltöttnek jelölt szkriptekhez megbízható digitális aláírás szükséges, hacsak nem blokkolod fel kifejezetten a fájlt. Ez megőrzi a hasznos különbségtételt a helyileg létrehozott és más forrásból szerzett kód között.

Rendszergazdai Windows PowerShell, amely a Set-ExecutionPolicy RemoteSigned parancsot és a végrehajtási házirend megerősítési ablakát mutatja

Ez az ábra egy gépszintű RemoteSigned parancsot mutat, mert a hatókör ki van hagyva; a LocalMachine az alapértelmezett hatókör. Előnyben részesíts egy kifejezett hatókört, hogy a hatás szándékos legyen.

Gyakori hiba a Set-ExecutionPolicy RemoteSigned futtatása -Scope nélkül. A Microsoft a LocalMachine-t dokumentálja alapértelmezett hatókörként a végrehajtási házirend beállításakor. Ezért jobb, ha kifejező vagy:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

A változtatás azonnal érvénybe lép; a PowerShellt nem kell újraindítani a CurrentUser vagy LocalMachine változtatásokhoz.

4. lépés: ideiglenes munkamenethez részesítsd előnyben a Process hatókörű házirendet

Ha hibát keresel vagy egy megbízható helyi szkriptet futtatsz egyszer, kerüld a tartós felhasználói vagy gépi változtatást. Egy szűkebb opció a következő:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

A Process hatókör csak az aktuális PowerShell munkamenetre vonatkozik. A Microsoft azt állítja, hogy ez a $Env:PSExecutionPolicyPreference környezeti változóban tárolódik, és törlődik, amikor a folyamat bezárul.

Ha egy nagyobb alkalmazás, telepítő vagy irányított automatizálási környezet már rendelkezik saját biztonsági modellel, a PowerShell a Bypass opciót is biztosítja:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Windows PowerShell, amely a Set-ExecutionPolicy parancsot mutatja Process hatókörben Bypass-szal, és a Get-ExecutionPolicy -List parancsot, amely Process Bypass-t mutat

A Process hatókörű Bypass eltűnik, amikor a PowerShell folyamat bezárul, de eltávolítja a végrehajtási házirend figyelmeztetéseit és blokkolását is az adott munkamenetre.

Kompromisszum: A Process hatókör minimalizálja a tartósságot, de a Bypass szélesebb körű, mint a RemoteSigned az adott munkameneten belül. A Microsoft a Bypass-t úgy írja le, mint ami semmit nem blokkol, és nem jelenít meg figyelmeztetéseket vagy megerősítéseket, és azt állítja, hogy olyan forgatókönyvekhez szánják, ahol egy másik alkalmazás biztosítja a biztonsági modellt. Egy normál interaktív hibaelhárítási munkamenethez először a Process RemoteSigned-t használd, hacsak nincs konkrét okod a Bypass használatára.

Egy különálló, egyszeri Windows PowerShell folyamathoz is indíthatod:

powershell.exe -ExecutionPolicy RemoteSigned -File .\script.ps1

A PowerShell 7 esetén a futtatható fájl a pwsh.exe. Egy parancssori végrehajtási házirend-beállítás továbbra sem írja felül a Csoportos házirend által kikényszerített végrehajtási házirendet.

5. lépés: ha a RemoteSigned blokkol egy letöltött szkriptet, csak azt a fájlt blokkold fel

A RemoteSigned másképp kezeli az internetről származónak jelölt fájlokat. A Microsoft dokumentálja az Unblock-File parancsmotort, amely eltávolítja az internetzóna jelölést, lehetővé téve egy felülvizsgált, aláíratlan szkript futtatását a RemoteSigned alatt.

Először vizsgáld felül a szkriptet. Ha megbízol a forrásban és felülvizsgáltad a tartalmát, futtasd:

Unblock-File -Path .\script.ps1

Használhatod a fájl Tulajdonságok párbeszédpaneljének Feloldás (Unblock) jelölőnégyzetét is. A Microsoft azt állítja, hogy az Unblock-File ugyanazt az alapvető műveletet hajtja végre. Lásd: Unblock-File.

Windows fájl Tulajdonságok párbeszédpanel a script.ps1-hez, amely a Biztonság szakaszt és a Feloldás jelölőnégyzetet mutatja

Egy felülvizsgált, letöltött szkript feloldása szűkebb körű, mint a házirend gyengítése a gépen lévő összes szkriptre.

Ellenőrizheted, hogy egy fájl rendelkezik-e Zone.Identifier alternatív adatfolyammal a következő paranccsal:

Get-Item .\script.ps1 -Stream Zone.Identifier -ErrorAction SilentlyContinue

A Microsoft megjegyzi, hogy a letöltési módszerek nem jelölik meg egyformán a fájlokat, így az adatfolyam hiánya nem bizonyítja, hogy a szkript biztonságos.

6. lépés: használj AllSigned-ot, ha a szervezetnek aláírási munkafolyamata van

Az AllSigned megköveteli, hogy az összes szkript és konfigurációs fájl megbízható kiadó által aláírt legyen, beleértve a helyileg létrehozott szkripteket is. Ez a szervezetnek konzisztens kiadói bizalmi munkafolyamatot biztosít, de működési többletköltséggel is jár: a szkripteknek Authenticode aláírásokra van szükségük, és a felhasználóknak megbízhatónak kell tekinteniük a releváns kiadókat.

A Microsoft about_Signing dokumentációja elmagyarázza, hogyan ellenőrzi a PowerShell a szkriptaláírásokat, és hogyan működnek a megbízható kiadói megerősítések.

Javaslat igény szerint: Az AllSigned akkor értelmes, ha a szervezetnek már vannak kódaláírási tanúsítványai, közzétételi irányítási eszközei és folyamata az aláírt szkriptek frissítésére. Egy magányos fejlesztő számára, aki helyi segédszkripteket ír, a RemoteSigned általában kevesebb súrlódással jár, miközben megőrzi az internetes eredet ellenőrzését.

7. lépés: ne küzdj a Csoportos házirenddel kezelt PC-n

A PowerShell két házirend-hatókört tár fel, amelyek a Csoportos házirendből származnak: MachinePolicy és UserPolicy. A Microsoft Csoportos házirend dokumentációja szerint a Szkriptfuttatás engedélyezése (Turn on Script Execution) beállítás kikényszerítheti a Korlátozott (Restricted), RemoteSigned vagy AllSigned viselkedést kezelt felhasználók és számítógépek esetén. A beállítás itt található:

Administrative Templates\Windows Components\Windows PowerShell

Lásd: about_Group_Policy_Settings.

Ha a Get-ExecutionPolicy -List definiált MachinePolicy-t vagy UserPolicy-t mutat, egy helyi Set-ExecutionPolicy parancs nem feltétlenül adja meg a várt érvényes viselkedést. A gyakorlati megoldás a megfelelő házirend kérése a rendszergazdától, egy aláírt szkript használata, ha szükséges, vagy egy jóváhagyott telepítési módszer alkalmazása.

8. lépés: állítsd vissza a ténylegesen megváltoztatott beállítást, majd ellenőrizd

Mielőtt megváltoztatnál egy tartós hatókört, jegyezd fel a meglévő értékét:

Get-ExecutionPolicy -Scope CurrentUser

Get-ExecutionPolicy -Scope LocalMachine

Ha később el kell távolítanod egy általad beállított házirend-értéket, a Microsoft azt dokumentálja, hogy állítsd az adott hatókört Undefined-re:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Undefined

Ne futtasd vakon a Set-ExecutionPolicy Restricted parancsot csak azért, mert egy képernyőkép ezt mutatja. Hatókör nélkül a parancs alapértelmezés szerint a LocalMachine-t célozza meg, és a „Korlátozott” (Restricted) nem feltétlenül volt az a hatókör előző értéke.

Windows PowerShell, amely egy Set-ExecutionPolicy Restricted megerősítési ablakot mutat

A képernyőkép egy Korlátozott (Restricted) változtatást szemléltet, de egy valódi visszaállításnak azt a hatókört és értéket kell visszaállítania, amelyet feljegyeztél, ahelyett, hogy tippelnéd az előző konfigurációt.

Végül ellenőrizd az érvényes házirendet és a szkriptet is:

Get-ExecutionPolicy

Get-ExecutionPolicy -List

.\script.ps1

Windows PowerShell, amely sikeresen futtatja a script.ps1-et, és visszaadja a „Script ran successfully” üzenetet

A sikeres szkriptfuttatás megerősíti, hogy a közvetlen tünet megoldódott; ellenőrizd újra a házirendlistát, hogy meggyőződj róla, nem hagytad-e véletlenül szélesebb hatókört megváltoztatva.

Melyik javítást kell választanod?

Az Ön helyzeteJavasolt kiindulópontMiért
Letöltöttél egy szkriptet egy megbízható forrásbólTartsd a RemoteSigned-ot, és használj Unblock-File-t felülvizsgálat utánEgy fájl bizalmát változtatja meg, nem az összes szkriptét
Csak az aktuális hibaelhárítási munkamenetben van szükséged szkriptekreProcess RemoteSignedA munkamenettel együtt zárul, és fenntartja az internetes eredet korlátozásait
Rendszeresen írsz és futtatsz saját szkripteketCurrentUser RemoteSignedTartós kényelem egy felhasználó számára, anélkül, hogy az összes PC-n lévő felhasználót érintené
Megosztott munkállomást adminisztrálszÉrtékeld a LocalMachine RemoteSigned vagy a szervezeti házirendetKonzisztens viselkedés az összes felhasználó számára, de szélesebb hatás
A céged kiadó által irányított szkripteket követel megAllSigned a szervezet aláírási és házirend-folyamatán keresztülKonzisztens aláírási követelmény az aláírási többletköltség árán
Egy telepítő vagy irányított automatizálási rendszer saját biztonsági modellel rendelkezikFontold meg a processz-hatókörű Bypass-tIrányított gazdaforgatókönyvekhez tervezve; kerüld, hogy laza állandó alapértelmezett beállítás legyen
MachinePolicy vagy UserPolicy definiáltKövesd az IT vagy a Csoportos házirendetA helyi hatókör-változtatások nem a megfelelő hatóság

Gyakori hibák, amelyek nagyobb problémát okoznak, mint az eredeti hiba

  • Unrestricted vagy Bypass állandó beállítása csak egy szkript futtatásához. Ez szélesíti azt, ami futtatható, amikor egy szűkebb Process, CurrentUser vagy fájlspecifikus változtatás megoldaná a problémát.
  • Minden parancs futtatása Rendszergazdaként. A CurrentUser és Process változtatásokhoz nem szükséges LocalMachine házirend-változtatás.
  • A Csoportos házirend figyelmen kívül hagyása. Ha az eszköz kezelt, a házirend szándékos lehet, és egy másik hatókör helyi megváltoztatása nem helyettesíti a szervezeti irányítást.
  • Szkript feloldása olvasás nélkül. Az Unblock-File eltávolítja az internetes eredet blokkolását; nem validálja a kódot.
  • Feltételezni, hogy egy aláírt szkript automatikusan ártalmatlan. A Microsoft megjegyzi, hogy az aláírt kód továbbra is lehet rosszindulatú; az aláírások kiadói és integritási információt állapítanak meg, nem biztonságos viselkedés garanciáját.
  • Megfeledkezni arról, melyik hatókört változtattad meg. Egy -Scope nélküli parancs érintheti a LocalMachine-t, míg egy Process változtatás eltűnik kilépéskor.

Összegzés

A legtöbb személyes Windows szkripteléshez a CurrentUser RemoteSigned ésszerű tartós választás, ha rendszeresen futtatsz helyileg készített szkripteket, míg az Unblock-File a szűkebb választás egy felülvizsgált, internetről letöltött szkript esetén. Egy ideiglenes hibaelhárítási munkamenethez a Process RemoteSigned minimalizálja a tartósságot. A Bypass-nak jogos szerepe van az irányított automatizálásban, de a kompromisszum az, hogy a végrehajtási házirend blokkolása és figyelmeztetései eltávolításra kerülnek az adott folyamatra. Kezelt számítógépeken a Csoportos házirendet tekintendő hatóságnak, nem pedig egy akadálynak, amelyet meg kell kerülni.

A legjobb javítás tehát nem egyetlen házirend mindenkinek. Az a legkisebb hatókör és a legkevésbé engedékeny viselkedés, amely még mindig támogatja a megbízható szkriptet, amelyet futtatnod kell.

Hagyj kommentárt

How to Fix "Tailwind CSS Styles Not Updating" in a Vite React App

How to Fix "Tailwind CSS Styles Not Updating" in a Vite React App

Fix Tailwind CSS styles not updating in Vite React by checking Tailwind v4 setup, CSS imports, source detection, dynamic classes, HMR, and stale caches.

Hogyan javítsuk ki a ModuleNotFoundError hibát: Nincs 'pip' nevű modul Python 3-ban

Hogyan javítsuk ki a ModuleNotFoundError hibát: Nincs 'pip' nevű modul Python 3-ban

Javítsd ki a Python 3 ModuleNotFoundError hibáját a pip esetében Windows, macOS és Linux rendszereken ensurepip, operációsrendszer-csomagok, virtuális környezetek és interpreter-ellenőrzések segítségével.

A „Hozzáférés megtagadva (nyilvános kulcs)” hiba javítása a GitHub SSH-ban

A „Hozzáférés megtagadva (nyilvános kulcs)” hiba javítása a GitHub SSH-ban

Javítsd ki a GitHub SSH engedély megtagadva (nyilvános kulcs) hibát a gazdagép, az aktív SSH kulcs, a GitHub fiók, az SSO-engedélyezés, a távoli URL és a 22-es port hozzáférésének ellenőrzésével.

Hogyan javítsuk ki a „Git Push elutasítva: nem gyorsított előretekerés” hibát a változtatások elvesztése nélkül

Hogyan javítsuk ki a „Git Push elutasítva: nem gyorsított előretekerés” hibát a változtatások elvesztése nélkül

Git nem gyorsított push hiba javítása biztonságosan. Helyi munka védelme, távoli commitok beolvasása, egyesítés vagy újraalapozás kiválasztása, ütközések feloldása és push végrehajtása a változtatások elvesztése nélkül.

Hogyan javítsuk ki az „Nginx 502 Bad Gateway” hibát Node.js proxy használatakor

Hogyan javítsuk ki az „Nginx 502 Bad Gateway” hibát Node.js proxy használatakor

Javítsd ki az Nginx 502 Bad Gateway hibákat egy Node.js upstream fájllal az alkalmazásport, az NGINX naplók, a proxy_pass cím, a konténerhálózat, az időtúllépések és az újratöltés ellenőrzésével.

Hogyan javítsuk ki a „Type 'null' Is Not Assignable to Type” hibát TypeScriptben?

Hogyan javítsuk ki a „Type 'null' Is Not Assignable to Type” hibát TypeScriptben?

Kijavítottuk a TypeScript „A 'null' típus nem rendelhető típushoz” hibáját uniótípusokkal, szűkítéssel, alapértelmezett értékekkel és biztonságos állításokkal a strictNullChecks alatt.

Hogyan javítsuk ki a „Prisma Client has not been generated yet” hibát

Hogyan javítsuk ki a „Prisma Client has not been generated yet” hibát

Javítsa ki a Prisma Client nem generált hibát a generátor, a séma, a kimeneti útvonal, az importok, a verziók, a monorepo beállítás és a telepítési build lépések ellenőrzésével.

Az „ERR_MODULE_NOT_FOUND” hiba javítása a Node.js ESM importálásokban

Az „ERR_MODULE_NOT_FOUND” hiba javítása a Node.js ESM importálásokban

Javítsd ki a Node.js ERR_MODULE_NOT_FOUND hibát az ESM-ben az importálási útvonalak, fájlkiterjesztések, csomagtelepítés, exportálások, ESM mód és tiszta telepítések ellenőrzésével.

Hogyan javítható az SSL-tanúsítvány hiba: Unable to Get Local Issuer Certificate Git esetén

Hogyan javítható az SSL-tanúsítvány hiba: Unable to Get Local Issuer Certificate Git esetén

Javítsd ki a Git 'unable to get local issuer certificate' hibáját a megbízható háttérprogram azonosításával, a helyes CA-lánc telepítésével, és az SSL-ellenőrzés engedélyezve tartásával.

Hogyan javítsuk meg a MongoDB hálózati időtúllépési hibát a Mongoose kapcsolódásnál

Hogyan javítsuk meg a MongoDB hálózati időtúllépési hibát a Mongoose kapcsolódásnál

Javítsa a Mongoose MongoDB hálózati időtúllépési hibáit az időtúllépés típusának azonosításával, az Atlas vagy TCP elérhetőség tesztelésével, az URI helyesbítésével, és az időtúllépések beállításával csak akkor, ha az indokolt.