Mājas lapa » » Geek skolas mācīšanās Kā lietot objektus PowerShell

    Geek skolas mācīšanās Kā lietot objektus PowerShell

    Izpratne par objektiem ir viena no pamatprincipām, lai iegūtu PowerShell. Pievienojieties mums, kad mēs izpētīsim objektus un kā viņi dara PowerShell labākus nekā jebkurš cits šodienas šūna.

    Noteikti izlasiet iepriekšējos sērijas rakstus:

    • Uzziniet, kā automatizēt Windows ar PowerShell
    • Mācīšanās lietot Cmdlet PowerShell

    Un visu nedēļu palieciet pārējo sēriju.

    Objekti

    Vai esat kādreiz domājuši, kas atšķiras no PowerShell, izņemot tradicionālo Linux apvalku, piemēram, Bash, vai pat mantojuma komandu uzvedni? Atbilde ir patiešām vienkārša: tradicionālie čaumalas izdrukas teksts, kas apgrūtina to, kā veikt formatēšanu un filtrēšanu. Protams, ir rīki, kas palīdzēs jums paveikt darbu (sed un grep nāk prātā), bet dienas beigās, ja vēlaties veikt jebkāda veida smagu teksta analīzi, jums jāzina regulāras izteiksmes, piemēram, aizmugurē.

    PowerShell izmanto pamata .Net sistēmu un izmanto atšķirīgu pieeju, lietojot objektus teksta vietā. Objekti ir tikai kaut ko pārstāvoši. Tie ir daļu un darbību kolekcija, kas tos izmanto. Paskatīsimies uz velosipēdu daļām un to, kā mēs tos varētu izmantot.

    .Net objekti ir daudz vienādi, izņemot divas nelielas atšķirības: tiek sauktas “Parts” īpašības un “Instrukcijas” tiek sauktas metodes. Ja mēs gribējām pārstāvēt Windows pakalpojumu kā objektu, mēs varam izlemt, ka ir lietderīgi to aprakstīt, izmantojot trīs īpašības: Pakalpojuma nosaukums, Valsts un Apraksts. Mums ir arī jārīkojas ar šo pakalpojumu, lai mēs varētu dot objektam Start, Stop un Pause metodi.

    Objekta rekvizītus un metodes var redzēt, nododot to Get-Member cmdlet. Objekti, kurus PowerShell cmdlet izejas lielākoties ir pamatā no .Net sistēmas, bet jūs varat izveidot savus objektus, ja jums ir nepieciešams izmantot valodu, piemēram, C # vai izmantot PSObject veidu.

    Cauruļvads

    Ir daudz Linux čaulu ar cauruļvadu, kas ļauj jums nosūtīt tekstu, ko viena komanda izvada kā ievadi nākamajai vadībai cauruļvadā. PowerShell ņem to uz nākamo līmeni, ļaujot jums veikt objektus, kurus viens cmdlet izvadīs, un nodod tos kā ievadi nākamajā cmdlet cauruļvadā. Triks ir zināt, kāda veida objekts ir cmdlet, un tas ir patiešām viegli, ja izmantojat Get-Member cmdlet.

    Get-Service | Get-Member

    To iemeslu dēļ, kas ir ārpus šī panta darbības jomas, īpašības un metodes tiek sauktas par klases dalībniekiem, kas izskaidro, kāpēc izmantojat Get-Member cmdlet, lai iegūtu sarakstu ar visām metodēm un īpašībām, kuras objektam ir. Tomēr Get-Member cmdlet atgriež arī citu svarīgu informāciju, kas ir pamatā esošais objekta veids. Iepriekšējā ekrānuzņēmumā mēs redzam, ka Get-Service atgriež šāda veida objektus:

    System.ServiceProcess.ServiceController

    Tā kā PowerShell nodarbojas ar objektiem un nevis tekstu, visas cmdlet var savienot kopā, izmantojot cauruļvadu [1]. Tas nozīmē, ka mums ir jāatrod cmdlet, kas vēlas pieņemt System.ServiceProcess.ServiceController objektu no cauruļvada.

    Get-Command -ParameterType System.ServiceProcess.ServiceController

    Ievērojiet, ka ir cmdlet, ko sauc par Stop-Service; apskatīsim palīdzību.

    Get-Help -Name Stop-Service

    Šķiet, ka InputObject parametrs ievada ServiceController objektu masīvu. Parasti, ja redzat parametru InputObject, tā pieņems ievadu no cauruļvada, bet tikai, lai pārliecinātos, ka aplūkosim visu parametra palīdzību.

    Get-Help -Name Stop-Service-Pilns

    Mūsu aizdomas bija pareizas. Tātad šajā brīdī mēs zinām:

    • Get-Service atgriež ServiceController objektus
    • Stop-Service ir parametrs, ko sauc par InputObject, kas ievada vienu vai vairākus ServiceControllers.
    • InputObject parametrs pieņem cauruļvada ievadi.

    Izmantojot šo informāciju, mēs varētu veikt šādas darbības:

    Get-Service - nosaukums "Apple Mobile Device" | Stop-Service

    Tas ir viss šajā laikā. Nākamreiz aplūkosim, kā mēs varam formatēt, filtrēt un salīdzināt cauruļvada objektus.

    Mājasdarbs

    • Izlasiet objektu cauruļvadu

    Ja jums ir kādi jautājumi, varat čivināt mani @taybgibb vai vienkārši atstāt komentāru.