Geek School Lær at forlænge PowerShell
PowerShell tilbyder to måder, hvorpå du kan udvide skallen. Du kan enten bruge snapins, som kun er binære og udviklet i et fuldt udviklet programmeringssprog som C #, eller du kan bruge moduler, som kan være både binære og scriptbaserede.
Sørg for at læse de tidligere artikler i serien:
- Lær at automatisere Windows med PowerShell
- Lære at bruge Cmdlets i PowerShell
- Lære at bruge objekter i PowerShell
- Learning Formatering, filtrering og sammenligning i PowerShell
- Lær at bruge fjernelse i PowerShell
- Brug af PowerShell til at få computeroplysninger
- Arbejder med samlinger i PowerShell
Og hold dig indstillet til resten af serien hele ugen.
snapins
Snapins er det sidste år. Alle vittigheder til side, snapins aldrig rigtig fanget blandt PowerShell samfund, fordi de fleste scripters ikke er udviklere, og du kan kun skrive snapins på et sprog som C #. Ikke desto mindre er der stadig nogle produkter, der bruger snapins, som f.eks. Web Deploy. For at se, hvilke snapins der er tilgængelige for dig at bruge i skallen, bruger du følgende kommando:
Get-PSSnapin -Registered
For at bruge kommandoer tilføjet af en snapin, skal du først importere den til din session, og du kan gøre det sådan:
Add-PSSnapin-Name WDeploySnapin3.0
På dette tidspunkt vil du få en fejl, hvis du ikke har installeret Web Deploy snapin. Hvis du har det installeret, som jeg gør, så bliver det importeret til din session. For at få en liste over kommandoer, der er tilgængelige i snapin, kan du simpelthen bruge kommandoen Get-Command cmdlet:
Get-Command -Module WDeploy *
Bemærk: Teknisk er dette ikke et modul, men af en eller anden grund skal du stadig bruge modulparameteren.
moduler
Moduler er nyere og er vejen frem. De kan både scriptes ved hjælp af PowerShell såvel som kodet på et sprog som C #. De fleste af de indbyggede kommandoer er også organiseret i moduler. For at se en liste over moduler på dit system, kan du bruge følgende kommando:
Get-Module -ListAvailable
Da produkterne opdateres, bliver deres PowerShell-kolleger flyttet til moduler. For eksempel har SQL brugt en snapin, men den består nu af moduler.
For at kunne bruge et modul skal du først importere det.
Import-modul-navn SQLASCMDLETS
Du kan bruge det samme trick, vi brugte med snapins, til at se alle de kommandoer, som modulet tilføjede til skallen.
Så det forlader spørgsmålet: Hvordan ved PowerShell, hvilke snapins og moduler du har på dit system? Nå, snapins er lidt smerte og skal installeres. En del af installationsprocessen omfatter at oprette et par registreringsdatabaser, som PowerShell ser på at finde snapin-oplysninger. Moduler kan derimod registreres på skallen ved blot at placere dem på en af lokaliteterne i PSModulePath miljøvariablen. Alternativt kan du blot tilføje stien til modulet til miljøvariablen.
($ Env: PSModulePath) .Split ( ”;”)
Det vil spytte ud af variablenes indhold. Bemærk, at hvis du har et modul som SQL installeret, hvordan det ændrede variablen til at omfatte SQL-modulets placering.
Modul Automatisk indlæsning
PowerShell 3 introducerede en fantastisk ny funktion, der går af et par navne. Ingen af dem er officielle, men "Module Auto Loading" er den bedste beskrivelse af den. I grund og grund giver det dig mulighed for at bruge cmdlets, der tilhører et eksternt modul, uden at eksplicit importere modulet ved hjælp af cmdlet Import-modulet. For at se dette skal du først fjerne alle modulerne fra din shell ved hjælp af følgende kommando:
Get-Module | Fjern-modul
Du kan derefter kontrollere, at du ikke har nogen moduler indlæst ved at bruge følgende:
Get-modul
Brug nu en cmdlet, der ikke er i kernebiblioteket. Test-forbindelse er en god en:
Test-Connection localhost
Hvis du tjekker dine indlæste moduler igen, vil du se, at det faktisk lagde modulet.
Det er alt for i dag fyre, kom med os i morgen for mere.