PowerShell-korvausmenetelmä ja operaattori: syntaksi, esimerkkejä

8. kesäkuuta 2021 14361 Näkymät Kuinka käyttää PowerShellia tiedostojen ja joidenkin sovellusversiotietojen saamiseksi

PowerShell Korvata voidaan käyttää korvaamaan merkkejä, merkkijonoja, tekstejä tai erikoismerkkejä. PowerShellissä on Korvata Menetelmä ja a Korvata Operaattori .

Tämä S-alue opettaa sinulle PowerShellin käytön Korvata Menetelmä ja Korvata Operaattori suorittaa erilaisia ​​korvaavia tehtäviä.

Oppaassa on 2 osaa. Ensimmäinen osa kattaa Korvata Menetelmä useilla esimerkeillä.

Sitten toisessa osiossa opit käyttämään Korvata Operaattori , myös useilla esimerkeillä.

Selaa viestien aiheita

PowerShell Replace -menetelmän käyttäminen useilla esimerkeillä

PowerShell Replace -menetelmän käyttäminen useilla esimerkeillä

Kuten johdannossa mainitsin, tässä osiossa opetetaan käyttämään Korvaa menetelmä . Osio alkaa syntaksilla the Korvaa menetelmä .

PowerShell Replace -menetelmän syntaksi

Kohteen syntaksit Korvata Menetelmä On…

|_+_| |_+_|

Syntaksit tekevät saman asian. Ainoa syy, miksi minulla on molemmat, on havainnollistaa, että voit korvata merkkejä tai merkkijonoja.

Ensimmäinen syntaksi näyttää, kuinka PowerShell Replace Method -menetelmää käytetään merkkien korvaamiseen. Toinen syntaksi näyttää kuitenkin, kuinka merkkijono korvataan.

Kuinka luetella menetelmät PowerShell-objektissa

Mainitsin jo, että PowerShellillä on korvausmenetelmä ja operaattori. Voit luetella kaikki PowerShell-objektissa käytettävissä olevat menetelmät pitämällä objektin pisteillä Liity jäseneksi komento.

Esimerkiksi löytääksesi tässä objektissa käytettävissä olevat menetelmät, suorita alla oleva komento:

|_+_|

Komento palauttaa joukon menetelmiä. Olen korostanut Korvata Menetelmä alla olevassa kuvakaappauksessa.

Lisäksi on toinen tapa suorittaa Liity jäseneksi komento. Sen sijaan, että pistäisit esineen sisään Liity jäseneksi -komennolla voit määrittää objektin InputObject-parametrissa Liity jäseneksi .

Tässä on esimerkki…

|_+_|

Tuloksessa luetellaan myös useita objektissa käytettävissä olevia menetelmiä - mukaan lukien Korvata Menetelmä .

PowerShell Replace -menetelmän käyttäminen useilla esimerkeillä

Vielä viimeinen asia ennen kuin siirryn seuraavaan alaosioon, jos katsot kahden viimeisen komennon tuloksen Kuvaus-saraketta, siinä on menetelmän syntaksi.

Tämä on erittäin hyödyllistä, koska se kertoo sinulle, kuinka menetelmää käytetään.

PowerShell Replace -menetelmän käyttäminen merkkijonon merkin korvaamiseen

Mainitsin Syntaksi-alakohdassa, että voit korvata merkkejä tai merkkijonoja. Yksinkertaisen esimerkin antamiseksi haluan korvata Victorin V:n pienellä kirjaimella v.

Tässä on käsky…

|_+_|

Ja tässä on tulos PowerShellissä…

PowerShell Replace Method -menetelmän arvoissa kirjainkoolla on merkitystä. Arvot tarkistavat tarkan kirjainkoon. Jos esimerkiksi yritin korvata pieniä kirjaimia v Victorissa ja yritän korvata sen A:lla, komento palauttaa saman tuloksen.

Tässä on komento, jonka kuvasin yllä olevassa huomautuksessa…

|_+_|

Kun suoritin tämän komennon PowerShellissä, se palautti Victorin, alkuperäisen objektin, koska merkkijonossa ei ole pientä v-kirjainta, Victor!

PowerShellissä Korvata Operaattori Tämän oppaan osassa opit, että – toisin kuin Korvaa-menetelmässä – Korvata Operaattori kirjainkoolla ei ole merkitystä.

Kuinka käyttää PowerShell Replace -menetelmää useiden merkkijonojen korvaamiseen tekstitiedostossa

Tämän oppaan ajatusten mukaisesti voit myös korvata useita merkkijonoja tekstitiedostossa.

Tässä esimerkissä minulla on tekstitiedosto, jossa on joitain palvelinnimiä. Tässä on kuvakaappaus tekstitiedostosta.

Kuinka käyttää PowerShell Replace -menetelmää useiden merkkijonojen korvaamiseen tekstitiedostossa

Haluan korvata palvelimen nimen ITGServer1 nimellä ITGServer4. Lisäksi haluan korvata ITGServer2:n ITGServer5:llä ja ITGServer3:n ITGServer6:lla.

Tässä on skripti, joka suorittaa tehtävän…

|_+_|

Skriptin ensimmäinen rivi käyttää Hanki-sisältö tuodaksesi tekstitiedoston sisällön PowerShelliin. Sitten putket tuloksen Jokaiselle esineelle .

Lopuksi sisällä Jokaiselle esineelle silmukka, PowerShell käyttää atemaattista muuttujaa $_, jonka jokaiselle objektille on luonut Jokaiselle esineelle Korvaa kohteet määritetyllä tavalla.

Olen ketjuttanut PowerShell Replace Methodin. Muussa tapauksessa komentosarja tuottaa ei-toivotun tuloksen.

Suorita komentosarja kopioimalla se PowerShell ISEen ja suorittamalla se.

Skriptin viimeisessä versiossa PowerShell näyttää tuloksen konsolissa. Sinä pystyt kirjoita tulos pitämällä olemassa olevat komennot Sarja-sisältö komento.

Tässä on päivitetty skripti. Kirjoitusvirheiden välttämiseksi tallensin komentosarjan edellisen version tulosteen muuttujaan. Sitten laitoin muuttujan sisään Sarja-sisältö komento.

|_+_|

Tässä on uuden tekstitiedoston tulos…

Kuinka käyttää PowerShell Replace -menetelmää useiden merkkijonojen korvaamiseen tekstitiedostossa

Kuinka käyttää PowerShell Replace -menetelmää useiden merkkien korvaamiseen

Useiden merkkijonojen korvaaminen tekstitiedostossa on sama kuin useiden merkkien korvaaminen merkkijonossa. Viimeisen osan esimerkistä on parempi ketjuttaa Replace Method.

Tässä esimerkissä haluan korvata menetelmän M:n T:ksi. Lisäksi haluan korvata d:n D:llä.

Tässä on käsky…

|_+_|

Ja tulos PowerShellissä…

PowerShell Replace -menetelmän käyttäminen putkistossa

Viimeisessä osiossa suoritin tämän komennon liittämättä merkkijonoa, Method to the Korvata Menetelmä:

|_+_|

Voin ajaa saman komennon, mutta tällä kertaa kirjoita merkkijono Korvaa-menetelmään. Kuitenkin, kun välitän sen liukuhihnalle, minun on kutsuttava merkkijono liukuhihnan automaattisella muuttujalla $_.

Komentoa on muutettava alla olevan kuvan mukaisesti:

|_+_|

Kuten alla olevasta kuvakaappauksesta näet, viimeinen komento tuottaa saman tuloksen kuin viimeisen alaosan komento…

PowerShell Replace -menetelmän käyttäminen putkistossa

PowerShell Replace -menetelmän käyttäminen korvataksesi kaikki merkkijonot merkin jälkeen

Tämän alaosan esimerkissä haluan korvata kaiken viimeisen kenoviivan jälkeen, tässä merkkijonossa - c:programfiles vversion8uninstall.exe - tyhjällä merkkijonolla.

Nämä kaksi komentoa hoitavat tehtävänsä.

|_+_|

Ensimmäinen komento tallentaa merkkijonon muuttujaksi. Sitten toinen komento käyttää PowerShell Replace Method -menetelmää korvatakseen kaiken merkkijonon jälkeen tyhjällä välillä.

Käytännössä kaikki jälkeen poistetaan. Tässä on komentojen tulos..

PowerShell Replace -menetelmän käyttäminen merkkijonon korvaamiseen tekstitiedostossa

Minulla on tekstitiedosto nimeltä Prosessitiedosto1.txt . Tekstitiedostolla on arvo AgentSvc, jonka haluan korvata arvolla AgentSvc_New.

PowerShell Replace -menetelmän käyttäminen merkkijonon korvaamiseen tekstitiedostossa

Alla olevat komennot suorittavat tehtävän loppuun…

|_+_|

Ensimmäinen komento tallentaa tiedoston polun muuttujaan. Lisäksi toinen komento tallentaa arvon, jonka haluan löytää toisesta muuttujasta.

Lisäksi kolmas rivi tallentaa korvaavan merkkijonon toiseen muuttujaan. Lopuksi viimeisessä komennossa kutsun Korvaa-menetelmää komennon tuloksessa Hanki-sisältö komento.

Sitten käytän Replace Methodissa $find- ja $replace-muuttujiin tallennettua arvoa. Ohjaa sitten ulostulo kohtaan Sarja-sisältö joka päivittää tekstitiedoston uusilla arvoilla.

Komentojen suorittamisen jälkeen tässä on uusi arvo tekstitiedostossa.

PowerShell Replace -menetelmän käyttäminen kaksoislainausten korvaamiseksi yksittäisillä lainausmerkeillä

Tässä alaosiossa haluan korvata kaksoislainausmerkin 234″ 20.1.2021 yksittäisillä lainausmerkeillä. Tässä komennot…

|_+_|

Ensimmäinen rivi tallentaa merkkijonon, 234″ 20.1.2021 muuttujassa. Sitten toisella rivillä käytin PowerShell Replace Method -menetelmää korvatakseni kaksoislainausmerkkijonon yksittäisillä lainausmerkeillä.

Temppu on PowerShellin lainaussääntöjen soveltamisessa ja käytössä. PowerShell käyttää sekä lainausmerkkejä että lainausmerkkejä kirjaimellisen merkkijonon määrittämiseen.

Tässä esimerkissä haluamme korvata lainausmerkit, , merkkijonossa yhdellä lainausmerkillä, . Jos kuitenkin muistat, PowerShell Replace Methodissa tarvitset myös lainausmerkkejä korvattavan arvon ja uuden arvon määrittämiseksi.

Joten määrittääksemme nykyisen arvon (lainausmerkit) Replace-komennossa, käärimme kaksoislainausmerkin kertalainausmerkkeihin – ‘’.

Lisäksi voit määrittää uuden arvon (yksittäiset lainausmerkit) käärimällä ne lainausmerkkeihin – .

Koska alkuperäisessä merkkijonossa on lainausmerkkejä, 234″ 20.1.2021 , tallentaakseni merkkijonon muuttujaksi, minun piti kääriä merkkijono yksittäisiin lainausmerkkeihin.

Palatakseni komentoihin…

|_+_|

Tässä on tulos PowerShellissä…

PowerShell Replace -menetelmän käyttäminen kaksoislainausten korvaamiseksi yksittäisillä lainausmerkeillä

Niin yksinkertaiselta kuin tämä esimerkki näyttääkin, jos et ymmärrä PowerShellin lainaussääntöjä, sinulla on vaikeuksia saada PowerShell suorittamaan tämä tehtävä!

PowerShell Replace -menetelmän käyttäminen tarkan vastaavuuden korvaamiseen

Tämä osa tarjoaa toisen esimerkin PowerShell Replace Method -menetelmästä. Tällä kertaa haluan opettaa sinulle kuinka korvata tarkka vastaavuus merkkijonossa.

Tämän osan esimerkki on tästä stackoverflow.com lanka. Kysymyksen lähettänyt käyttäjä haluaa korvata teen tässä merkkijonossa, toin tiimilleni teetä kahvilla.

Tässä on komento, joka tekee työn…

|_+_|

Ja tässä on PowerShellin komennon tulos…

PowerShell Replace -menetelmän käyttäminen kenoviivan korvaamiseen ()

Tässä alaosiossa korvaan yhden kenoviivan () tässä merkkijonossa, 23420.1.2021 kaksinkertaisella kenoviivalla (\). Tässä on käsky…

|_+_|

Tulos PowerShellissä…

PowerShell Replace -menetelmän käyttäminen kenoviivan korvaamiseen ()

Kuten näet tämän oppaan PowerShell Replace Operator -osiosta, yhden kenoviivan korvaaminen Replace Operatorilla ei ole näin yksinkertaista.

Virheellisten tiedostonimimerkkien korvaaminen PowerShellissä

Windows-käyttöjärjestelmässä on joitakin merkkejä, joita ei voida käyttää tiedostojen tai kansioiden nimeämiseen. Näitä merkkejä kutsutaan yleensä virheellisiksi tiedostonimen merkeiksi.

Jos yrität luoda tiedostonimeä jollakin merkillä, saat virheilmoituksen.

Joten jos kirjoitat PowerShell-komentosarjan, joka käyttää jotakin tulostetta tiedostonimen luomiseen, mutta nämä lähdöt sisältävät virheellisiä tiedostonimen merkkejä, sinun on poistettava kyseiset merkit.

Tässä alaosassa käsitelty komentosarja ei käytä PowerShell Replace -menetelmää. Päätin kuitenkin sisällyttää sen, koska uskon, että se korjaa ainutlaatuisen ongelman, jonka useimmat SysAdmins voivat kohdata.

Siirryn eteenpäin, sain esimerkin, josta keskustelen pian tästä Stackoverflow.com kysymys. Kysymyksen esittänyt käyttäjä haluaa poistaa virheelliset merkit merkkijonosta ennen kuin käyttää merkkijonoa tiedoston luomiseen.

Lisäksi, jos merkkijono sisältää välilyöntejä, käyttäjä haluaa säilyttää välilyönnit tiedoston nimessä.

Katselin eri käyttäjien suosimia ratkaisuja. Se, jolla oli paras ratkaisu, lähetti John Longmuir .

Johnin esimerkissä hän haluaa poistaa kaikki virheelliset tiedostonimen merkit merkkijonosta 'abc* def.txt'. Alkuperäisen kysymyksen kirjoittajan pyynnöstä hän kuitenkin haluaa säilyttää merkkijonon välilyönnit.

Tässä Johanneksen käsikirjoitus...

|_+_|

Ensimmäisessä komennossa hän tallentaa merkkijonon muuttujaksi. Sitten toisen komennon ensimmäisessä osassa (ennen liukuhihnaa) hän muuntaa $ na me-muuttujan [char]-tietotyyppiin.

Tietotyyppi [char] on 16-bittinen Unicode-merkki.

Komennon toisessa osassa John ohjaa muunnetun [char]-tietotyypin lähdön Where-Object-komennoksi. Missä-Object-skriptilohkossa hän kutsuu GetinvalidFileNameChars() Menetelmä Polkuluokka , [IO.Path] .

Sitten käskee PowerShellia palauttamaan vain arvot, jotka eivät sisälly GetinvalidFileNameChars() Menetelmä.

The GetinvalidFileNameChars() Menetelmä luettelee kaikki virheelliset tiedostonimen merkit.

Lopuksi, kun virheelliset tiedostonimen merkit on poistettu, hän tekee kaikki merkit merkkijonoksi PowerShell Joinin avulla.

Lopputulos on… Erikoismerkit (virheelliset tiedostonimen merkit) ovat poissa, mutta merkkijono palautetaan välilyönneillä!

Jotta se olisi helppokäyttöinen, ja perustuu alkuperäiseen skriptiin, jonka on lähettänyt Stackoverflow.com kysymyksen kirjoittaja, päätin muuttaa Johnin käsikirjoituksen PowerShell-funktioksi.

Tässä on PowerShell-funktio, Remove-InvalidFileNameChars.

|_+_|

PowerShellin käyttäminen Korvaa operaattori useilla esimerkeillä

PowerShellin käyttäminen Korvaa operaattori useilla esimerkeillä

Tämän oppaan ensimmäisessä osassa käsittelin erilaisia ​​esimerkkejä PowerShell Replace Methodista. Tässä osiossa keskityn PowerShell Replace Operatoriin.

Osio alkaa keskustelemalla PowerShell Replace Operatorin syntaksista.

PowerShell-korvausoperaattorin syntaksi

PowerShell Replace Operatorin syntaksi on…

|_+_| |_+_|

Yksi selvä ero PowerShell-menetelmän ja operaattorin välillä on tapa, jolla niitä käytetään. Menetelmässä asetat kohteen viereen pisteen (.), jota seuraa menetelmän nimi ja () -sulut.

Päinvastoin, operaattorin kohdalla lisäät välilyönnin PowerShell-objektin perään, jonka jälkeen - ja nimi, jos operaattori on.

Joten seuraavissa esimerkeissä käyttämisen sijaan .Korvata() , aion käyttää -Korvata !

PowerShell Replace -menetelmän käyttäminen merkkijonossa olevan merkin käyttämiseen

Korvaakseni merkin i merkillä I merkkijonossa, Victor, käytän alla olevaa komentoa…

|_+_|

Tulos PowerShellissä…

Toisin kuin PowerShell Replace Method, jossa kirjainkoolla on merkitystä, PowerShell Replace Operator ei. Joten alla oleva komento tuottaa saman tuloksen kuin edellinen komento…

|_+_|

Tällä kertaa käytin arvopuolella isoa I-kirjainta Korvata operaattori. Huomaa, että merkkijonossa ei ole isoa I:tä, Victor.

Joten jos kirjoitat PowerShell-komentosarjaa, jonka on korvattava ylä- ja alamerkit, käytä Korvaa-operaattoria Korvaa-menetelmän sijaan.

Kuinka käyttää PowerShell Replace -menetelmää useiden merkkijonojen korvaamiseen tekstitiedostossa

Korvaa menetelmä -osiossa annoin esimerkin, jossa korvasin palvelinnimet tässä tekstitiedostossa.

Kuinka käyttää PowerShell Replace -menetelmää useiden merkkijonojen korvaamiseen tekstitiedostossa

Haluan korvata palvelimen nimen ITGServer1 nimellä ITGServer4. Lisäksi haluan korvata ITGServer2:n ITGServer5:llä ja ITGServer3:n ITGServer6:lla.

Tässä on Korvaa-menetelmän esimerkissä käytetyn komentosarjan Replace Operator -versio…

|_+_| Kuten teimme Replace Method -esimerkissä, viimeisen skriptin Replace Operator -osa on ketjutettu.

Kuinka käyttää PowerShell Replace Operaattoria korvaamaan kirjainkoolla erottuvat merkkijonot ja merkit

Tämän oppaan eri kohdissa olen vihjannut, että PowerShell Replace Method on kirjainkoon erottelukyky. PowerShell Replace Operator ei kuitenkaan ole.

Tässä osiossa haluan havainnollistaa sitä esimerkillä.

Tämä komento EI esimerkiksi korvaa R:tä, koska Korvaa-menetelmä on isojen ja pienten kirjainten välinen ero.

|_+_|

Tämä komento kuitenkin korvaa R:n, koska Replace Operator EI ole oletuksena kirjainkoon erottelukyky

|_+_|

PowerShell Replace Operatorin käyttäminen kenoviivan korvaamiseen ()

Tämän oppaan ensimmäisessä osassa käytin tätä PowerShell-komentoa yhden kenoviivan () korvaamiseen tässä merkkijonossa, 23420.1.2021 , kaksinkertaisella kenoviivalla, (\)…

|_+_|

Kuten näet, käytin vain yhtä kenoviivaa korvausmenetelmässä ilman ongelmia.

Jos kuitenkin muutan viimeisen komennon Replace Operator -versioksi, saan virheilmoituksen. Tässä on Replace Operator -komennon versio:

|_+_|

Jos suoritan komennon PowerShellissä, saan virheilmoituksen…

Syy tähän virheeseen johtuu siitä, että PowerShellissä käsitellään säännöllisenä lausekkeena. Tämän ongelman ratkaisemiseksi minun on lisättävä toinen kenoviiva kohtaan .

Tämä saa yhden kenoviivan muodossa näyttämään kaksoisviivalta \. Toinen kenoviiva kuitenkin käskee PowerShellia käsittelemään :tä säännöllisenä lausekkeena.

Joten komento on nyt..

|_+_|

Nyt komento toimii kuin hurmaa!

Siinä se – kattava ja uudistettu PowerShell Replace -opas! Toivottavasti siitä oli apua?

Jos koit sen hyödylliseksi, äänestä ystävällisesti Joo Oliko tämä viesti Hyödyllinen kysymys alla.

Vaihtoehtoisesti voit esittää kysymyksen, jättää kommentin tai antaa lisää palautetta tämän sivun lopusta löytyvällä Vastaa -lomakkeella.

Lopuksi lisää PowerShell tech S Zones -alueita Windows PowerShell -ohjesivullamme. Saatat myös pitää Work from Home -sivustamme erittäin hyödyllisenä.

Viitteet ja lisätietoa

  1. Tietoja menetelmistä
  2. Tietoja operaattorista
  3. about_quoting_Rules
  4. Ohjeet: Määritä PowerShell-tietotyypit
  5. Polkuluokka
  6. Powershell-alijonon purkaminen merkkijonosta
  7. Powershell, jos muuten selitetään: Syntaksi ja esimerkit