ha még nem ismeri a PowerShell szkript nyelvét, és szeretné megtanulni, hogyan kell futtatni egy PowerShell szkriptet, akkor a megfelelő blogbejegyzéshez érkezett. Ez a blog egy bemutató lesz, amely a szkriptek futtatásának általános módjait és néhány problémát tartalmaz.
Tartalomjegyzék
előfeltételek
ez a cikk áttekintést nyújt a PowerShell helyi számítógépen történő futtatásáról. Ha követni szeretné, kérjük, győződjön meg róla, hogy a következő előfeltételek vannak érvényben a cikk megkezdése előtt.
- rendszergazdai jogosultságokkal rendelkező Windows 10 számítógép.
- Windows PowerShell 5-ös vagy újabb verziója. Használhatja a PowerShell v7-et is. Ez az oktatóanyag a Windows PowerShell-re összpontosít, mivel a Windows operációs rendszer már rendelkezik vele.
- bármely szövegfájl-szerkesztő
végrehajtási házirend kezelése
ha ez az első alkalom, hogy Windows PowerShell-parancsfájlt próbál végrehajtani, gyakori problémába ütközhet. A PowerShell valószínűleg hibaüzenetet küld, amelyben kijelenti, hogy egy szkript “nem tölthető be, mert a szkriptek futtatása le van tiltva ezen a rendszeren”.
PS> .\GetServices.ps1 File C:\Temp\GetServices.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 .\GetServices.ps1 ~~~~~ CategoryInfo : SecurityError: (:) , PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess
a PowerShell a fenti hibaüzenetet adja vissza, amikor olyan PowerShell-t próbál futtatni, amelynek végrehajtási házirendje Korlátozott, távoli aláírt vagy minden aláírt.
Korlátozott
korlátozott a Windows ügyfélszámítógépek alapértelmezett házirend-beállítása. Ha először használja a PowerShell-t, akkor az alapértelmezett házirend valószínűleg az összes szkript korlátozására lesz beállítva.
az egyes parancsokat továbbra is végrehajthatja a terminálon, de szkriptfájlt nem. A korlátozás minden .ps1xml
, .psm1
vagy .ps1
végződésű fájlt tartalmaz.
korlátlan
korlátlan lehetővé teszi bármilyen parancsfájl futtatását, azonban a végrehajtás előtt figyelmeztet, ha a szkriptet letöltötte az internetről. Ez a házirend általában az alapértelmezett minden nem windows-OS eszköz esetében.
távoli aláírt
a távoli aláírt házirend lehetővé teszi bármely olyan parancsfájl futtatását, amely (a) digitálisan aláírt vagy (b) a helyi számítógépen aláírással vagy anélkül írt parancsfájl.
ha egy szkriptet letöltöttek az internetről, és nem írták alá, akkor fel kell oldania a fájl blokkolását. Ezt úgy teheti meg, hogy jobb egérgombbal kattint a fájlra, és kiválasztja a tulajdonságokat. Vagy használhatja a Unblock-File
PowerShell parancsmagot az adott szkriptfájlhoz.
távoli aláírt házirend használata ideális megoldás az internetről letöltött parancsfájl futtatásakor.
minden aláírt
minden aláírt megköveteli, hogy az összes szkriptet egy megbízható kiadó digitálisan aláírja. Ez magában foglalja az internetről letöltött és a számítógépen helyben írt szkripteket.
a PowerShell végrehajtási házirend módosítása
a végrehajtási házirend módosítása:
- nyissa meg a Windows PowerShell-t a Futtatás rendszergazdaként funkcióval, hogy megbizonyosodjon arról, hogy a legmagasabb jogosultsággal rendelkezik a házirend-módosítások elvégzéséhez.
2. Ha nyitva van, futtassa a következő PowerShell parancsot a számítógép végrehajtási házirendjének beállításához. A végrehajtási politika, amint azt fentebb tárgyaltuk, három különböző típus egyike lehet. Ez az oktatóanyag a RemoteSigned hasznos, mégis biztonságos végrehajtási politikáját használja.
mivel ez az oktatóanyag feltételezi, hogy letöltötte az internetről a GetServices.ps1 parancsfájlt, állítsa a végrehajtási házirendet RemoteSigned értékre.
PS> Set-ExecutionPolicy RemoteSigned
a RemoteSigned végrehajtási házirend arra kényszerít, hogy kriptográfiai módon aláírja az internetről letöltött minden PowerShell-szkriptet, mielőtt a PowerShell futtatná a rendszeren.
3. Látnia kell egy kimenetet, amely a művelet megerősítését kéri. Írja be az Y értéket, majd nyomja meg az enter billentyűt a házirend módosításának megerősítéséhez.
Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? Yes Yes to All No No to All Suspend Help (default is "N"):
ezen a ponton kövesse a következő lépéseket a PowerShell parancsfájl számítógépen történő futtatásának különböző módszereinek feltárásához.
hogyan kell futtatni egy PowerShell Script
bizonyítani fut egy PowerShell script, akkor valóban szükség van egy script fájlt futtatni! Ha nincs kéznél, töltse le ezt a ZIP fájlt, és bontsa ki a PS1 fájlt. A getservices.ps1 nevű egyszerű szkriptfájlt talál.
Write-Output "Listing Computer Services"Get-Service
minden PowerShell szkriptnek
.ps1
kiterjesztéssel kell végződnie.
a konzol használata
miután elkészült egy szkript, néhány különböző módon futtathat egy PowerShell szkriptfájlt. Az egyik leggyakoribb módszer a PowerShell konzolon keresztül történik.
erre:
- nyissa meg a PowerShell konzolt a fent látható módon.
2. A Set-Location
PowerShell parancsmag vagy a cd
alias segítségével keresse meg a szkript fájlrendszerének helyét. Ez a bemutató script megtalálható a C:\Temp könyvtár.
PS> cd C:\Temp\
3. Futtassa a szkriptet egy pont (.
) jelöléssel. A PowerShell egy shell, amely parancsneveket is keres. A PowerShell parancs és a szkript megkülönböztetéséhez a szkriptet egy ponttal kell előszavaznia. Ez a pont az aktuális könyvtárat jelöli.
PS> .\GetServices.ps1
PowerShell parancsfájl futtatása a parancssorból a PowerShell helyén keresztül
ha nem tud vagy nem szeretne parancsfájlokat futtatni a PowerShell konzolon keresztül, akkor ezt a jó öreg parancssorral is megteheti (parancssor).
parancsfájlok parancssoron keresztüli futtatásához először el kell indítania a PowerShell futtatható fájlt (powershell.exe), a PowerShell helye C:\Program Files\WindowsPowerShell\powershell.exe
, majd adja át a szkript elérési útját paraméterként.
parancsfájlokat futtathat paraméterekkel bármilyen környezetben, egyszerűen megadva őket a PowerShell futtatható fájl futtatása közben, például
powershell.exe -Parameter 'Foo' -Parameter2 'Bar'
.
miután megnyitotta a cmd-t.exe, akkor végre egy PowerShell script, mint az alábbiakban. Ez a példa futtatja a motort, és átadja a szkript elérési útját C:\Temp\GetServices.ps1.
az alábbiakban vegye figyelembe, hogy az alábbi példa a PowerShell hely elérési útját használja a szkript futtatásához. Ezt meg kell tennie, ha a mappa nincs valahol az útjában.
CMD> C:\Program Files\WindowsPowerShell\powershell.exe "C:\Temp\GetServices.ps1"
a PowerShell 7 PowerShell helye egy másik, pwsh nevű futtatható fájlt használ.az exe általában itt található C:\Program fájlok \ PowerShell \ 7 \ pwsh.exe.
az alábbiakban egy praktikus YouTube videó, amely magában foglalja a végrehajtó egy script keresztül kötegelt fájl, amely a cmd.exe végrehajtja.
a PowerShell ISE
használata ha saját szkripteket hoz létre vagy mások szerkesztését végzi, akkor valószínűleg olyan szkriptszerkesztőt fog használni, mint a PowerShell ISE vagy a Visual Studio (VS) kód. Mivel az ISE A Windows rendszerrel érkezik,összpontosítsunk erre az oktatóanyagra.
parancsfájl meghívása az ISE-n keresztül:
- keresse meg a Start menüt, keresse meg a PowerShell ISE – t, és nyissa meg.
2. Kattintson a fájl megnyitása gombra, és keresse meg a szkriptet.
3. Ha a szkript nyitva van, kattintson a zöld Futtatás gombra a szkript végrehajtásához. Ez a gomb meghívja a szkriptet a beépített PowerShell terminál alján.
a minta szkript kimenete
a PowerShell szkript néha visszaadhatja a kimenetet. Ez akkor történik, amikor a végrehajtott szkript objektumok visszaadására épül, ami a PowerShell alapvető eleme.
ha futtatja a minta getservices.ps1 parancsfájlt, a következőket fogja látni. Ez a parancsfájl a Get-Service
parancsmagot futtatja, amely a helyi Windows számítógépen telepített összes szolgáltatást visszaadja.
PS> .\GetScripts.ps1Listing Computer ServicesStatus Name DisplayName------ ---- -----------Running aakore Acronis Agent Core ServiceStopped AarSvc_1b668d Agent Activation Runtime_1b668dRunning AcronisActivePr... Acronis Active Protection ServiceRunning AcronisCyberPro... Acronis Cyber Protection ServiceRunning AcrSch2Svc Acronis Scheduler2 ServiceRunning AdobeARMservice Adobe Acrobat Update ServiceRunning AdobeUpdateService AdobeUpdateServiceRunning AGMService Adobe Genuine Monitor ServiceRunning AGSService Adobe Genuine Software Integrity Se...----Truncated----
PowerShell parancsfájl futtatása parancsfájlból
tegyük fel, hogy két szkripted van, és szeretnéd, ha az egyik hívná a másikat. Lehet, hogy van egy script nevű GetUser.ps1 és egy nevű ResetPassword.ps1. belül a getuser.ps1 script, szeretné végrehajtani a ResetPassword.ps1 visszaállítani a felhasználói jelszót.
a hívó parancsfájl (getuser.ps1) belsejében hozzáadhat egy sort a másik parancsfájl végrehajtásához, ugyanúgy, mint a parancssorból.
az alábbiakban láthatja, hogy van néhány lehetősége. A dolgok egyszerűsítése érdekében általában úgy kell döntenie, hogy a másik szkriptet ugyanazon a munkameneten vagy hatókörön belül futtatja, kivéve, ha konkrét oka van arra, hogy a szkriptet egy másik PowerShell-munkamenetben futtassa.
## To run the other script in a new sessionpowershell.exe .\ResetPassword.ps1## To run the other script in the same session.\ResetPassword.ps1