PowerShell nahradiť metódu a operátor: syntax, príklady

8. júna 2021 14361 Názory Ako používať PowerShell na získanie súboru a niektorých informácií o verzii aplikácie

PowerShell Vymeňte možno použiť na nahradenie znakov, reťazcov, textov alebo špeciálnych znakov. PowerShell má a Vymeňte Metóda a a Vymeňte Operátor .





Táto zóna S vás naučí, ako používať PowerShell Vymeňte Metóda a Vymeňte Operátor vykonávať rôzne náhradné úlohy.



Sprievodca má 2 časti. Prvá časť pokrýva Vymeňte Metóda s viacerými príkladmi.

Potom sa v druhej časti naučíte používať Vymeňte Operátor , aj s viacerými príkladmi.



Prehľadávať témy príspevkov



Ako používať PowerShell Nahradiť metódu viacerými príkladmi

Ako používať PowerShell Nahradiť metódu viacerými príkladmi

Ako som spomenul v úvode, táto časť vás naučí, ako používať Nahradiť metódu . Časť začína syntaxou súboru Nahradiť metódu .

Syntax metódy nahradenia prostredia PowerShell

Syntaxe Vymeňte Metóda je…



|_+_| |_+_|

Syntaxe robia to isté. Jediný dôvod, prečo mám oboje, je ukázať, že môžete nahradiť znaky alebo reťazce.



Prvá syntax ukazuje, ako použiť metódu PowerShell Replace Method na nahradenie znakov. Druhá syntax však ukazuje, ako nahradiť reťazec.

Ako vypísať zoznam metód v objekte PowerShell

Už som spomenul, že PowerShell má metódu a operátora nahradiť. Všetky metódy dostupné v objekte PowerShell môžete zobraziť tak, že objekt prenesiete do súboru Staňte sa členom príkaz.

Ak chcete napríklad nájsť metódy dostupné v tomto objekte, spustite príkaz nižšie:

|_+_|

Príkaz vráti množstvo metód. Zdôraznil som, Vymeňte Metóda na snímke obrazovky nižšie.

Okrem toho existuje ďalší spôsob, ako spustiť Staňte sa členom príkaz. Namiesto vhadzovania predmetu do Staňte sa členom môžete zadať objekt v parametri InputObject Staňte sa členom .

Tu je príklad…

|_+_|

Výsledok tiež uvádza množstvo metód dostupných v objekte – vrátane Vymeňte Metóda .

Ako používať PowerShell Nahradiť metódu viacerými príkladmi

Ešte posledná vec, než prejdem k ďalšej podsekcii, ak sa pozriete na stĺpec Popis výsledku posledných dvoch príkazov, má syntax metódy.

galaxy s7 stock rom

Je to veľmi užitočné, pretože vám povie, ako metódu používať.

Ako používať metódu nahradenia PowerShell na nahradenie znaku v reťazci

V podsekcii Syntax som spomenul, že môžete nahradiť znaky alebo reťazce. Aby som vám dal jednoduchý príklad, chcem nahradiť V vo Victor malým písmenom v.

Tu je príkaz…

|_+_|

A tu je výsledok v PowerShell...

Hodnoty v metóde nahradenia prostredia PowerShell rozlišujú veľké a malé písmená. Hodnoty skontrolujú presnú veľkosť písmen. Napríklad, ak som sa pokúsil nahradiť malé písmeno v vo Victor a pokúsiť sa ho nahradiť A, príkaz vráti rovnaký výsledok.

Tu je príkaz, ktorý som opísal v poznámke vyššie…

|_+_|

Keď som spustil tento príkaz v PowerShell, vrátil Victor, pôvodný objekt, pretože v reťazci nie je žiadne malé písmeno v, Victor!

V prostredí PowerShell Vymeňte Operátor časti tejto príručky sa dozviete, že – na rozdiel od metódy nahradenia – Vymeňte Operátor nerozlišuje veľké a malé písmená.

Ako používať metódu nahradenia prostredia PowerShell na nahradenie viacerých reťazcov v textovom súbore

V nadväznosti na myšlienky v tejto príručke môžete tiež nahradiť viacero reťazcov v textovom súbore.

V tomto príklade mám textový súbor s niektorými názvami serverov. Tu je snímka obrazovky textového súboru.

Ako používať metódu nahradenia prostredia PowerShell na nahradenie viacerých reťazcov v textovom súbore

Chcem nahradiť názov servera ITGServer1 za ITGServer4. Okrem toho chcem nahradiť ITGServer2 za ITGServer5 a ITGServer3 za ITGServer6.

Tu je skript, ktorý túto úlohu vykoná...

|_+_|

Prvý riadok skriptu používa Získajte obsah na importovanie obsahu textového súboru do prostredia PowerShell. Potom prenesie výsledok do Pre každý objekt .

Nakoniec v rámci Pre každý objekt slučke, PowerShell používa atematickú premennú $_ vytvorenú pre každý objekt Pre každý objekt na výmenu položiek podľa špecifikácie.

Zreťazil som metódu nahradenia prostredia PowerShell. V opačnom prípade skript vytvorí nežiaduci výsledok.

Ak chcete skript spustiť, skopírujte ho do PowerShell ISE a spustite ho.

V poslednej verzii skriptu PowerShell zobrazí výsledok v konzole. Môžeš napíšte výstup pridaním existujúcich príkazov do Set-Content príkaz.

Tu je aktualizovaný skript. Aby sa predišlo chybám pri zápise, uložil som výstup predchádzajúcej verzie skriptu do premennej. Potom som premennú vložil do Set-Content príkaz.

|_+_|

Tu je výstup nového textového súboru...

Ako používať metódu nahradenia prostredia PowerShell na nahradenie viacerých reťazcov v textovom súbore

Ako používať metódu nahradenia PowerShell na nahradenie viacerých znakov

Spracovanie nahradenia viacerých reťazcov v textovom súbore je rovnaké ako nahradenie viacerých znakov v reťazci. Z príkladu v poslednej časti je lepšie zreťaziť metódu nahradiť.

V tomto príklade chcem nahradiť M v metóde na T. Okrem toho chcem nahradiť d D.

Tu je príkaz…

|_+_|

A výsledok v PowerShell...

Ako používať metódu nahradenia PowerShell v potrubí

V poslednej časti som spustil tento príkaz bez zapojenia reťazca Method do Vymeňte metóda:

|_+_|

Môžem spustiť rovnaký príkaz, ale tentoraz prepojím reťazec s metódou Nahradiť. Keď ho však odovzdám do potrubia, musím zavolať reťazec s automatickou premennou potrubia $_.

Príkaz bude potrebné upraviť, ako je uvedené nižšie:

|_+_|

Ako môžete vidieť na obrázku nižšie, posledný príkaz vytvorí rovnaký výsledok ako príkaz v poslednej podsekcii…

Ako používať metódu nahradenia PowerShell v potrubí

Ako používať metódu nahradenia prostredia PowerShell na nahradenie všetkých reťazcov za znakom

V príklade v tejto podsekcii chcem nahradiť všetko za posledným spätným lomítkom, v tomto reťazci – c:programfiles vversion8uninstall.exe – prázdnym reťazcom.

Tieto dva príkazy urobia svoju prácu.

|_+_|

Prvý príkaz uloží reťazec do premennej. Potom druhý príkaz použije metódu nahradenia prostredia PowerShell na nahradenie všetkého za reťazcom prázdnym priestorom.

V skutočnosti sa všetko po vymaže. Tu je výsledok príkazov..

Ako používať metódu nahradenia prostredia PowerShell na nahradenie reťazca v textovom súbore

Mám textový súbor tzv Processfile1.txt . Textový súbor má hodnotu AgentSvc, ktorú chcem nahradiť AgentSvc_New.

Ako používať metódu nahradenia prostredia PowerShell na nahradenie reťazca v textovom súbore

Nasledujúce príkazy dokončia úlohu...

|_+_|

Prvý príkaz uloží cestu k súboru do premennej. Druhý príkaz tiež uloží hodnotu, ktorú chcem nájsť, do inej premennej.

Tretí riadok navyše uloží nahradzujúci reťazec do inej premennej. Nakoniec v poslednom príkaze zavolám metódu Nahradiť vo výsledku Získajte obsah príkaz.

Potom v rámci Replace Method použijem hodnotu uloženú v premenných $find a $replace. Potom pripojte výstup do Set-Content ktorý aktualizuje textový súbor o nové hodnoty.

Po spustení príkazov je tu nová hodnota v textovom súbore.

Ako používať metódu nahradenia prostredia PowerShell na nahradenie dvojitých úvodzoviek jednoduchými úvodzovkami

V tejto podsekcii chcem nahradiť dvojité úvodzovky v 234″20.1.2021 s jednoduchými úvodzovkami. Tu sú príkazy…

|_+_|

Prvý riadok uloží reťazec, 234″20.1.2021 v premennej. Potom som v druhom riadku použil metódu PowerShell Replace Method na nahradenie dvojitých úvodzoviek v reťazci jednoduchými úvodzovkami.

Trik je v aplikácii a použití pravidiel citovania PowerShell. PowerShell používa jednoduché aj dvojité úvodzovky na zadanie doslovného reťazca.

V tomto príklade chceme nahradiť dvojité úvodzovky, , v reťazci jednoduchými úvodzovkami, . Ak si však spomeniete, v metóde nahradenia prostredia PowerShell potrebujete úvodzovky na zadanie hodnoty, ktorú chcete nahradiť, a novej hodnoty.

Aby sme teda určili aktuálnu hodnotu (dvojité úvodzovky) v príkaze Nahradiť, zabalíme dvojité úvodzovky do jednoduchých úvodzoviek – „“.

Navyše, ak chcete zadať novú hodnotu (jednoduché úvodzovky), zabalíte ich do dvojitých úvodzoviek – .

Tiež kvôli prítomnosti dvojitých úvodzoviek v pôvodnom reťazci, 234″20.1.2021 , na uloženie reťazca do premennej som musel reťazec zabaliť do jednoduchých úvodzoviek.

Vráťte sa k príkazom…

|_+_|

Tu je výsledok v PowerShell…

Ako používať metódu nahradenia prostredia PowerShell na nahradenie dvojitých úvodzoviek jednoduchými úvodzovkami

Akokoľvek jednoducho vyzerá tento príklad, ak nerozumiete pravidlám citovania PowerShellu, budete mať problém prinútiť PowerShell, aby túto úlohu dokončil!

Ako používať metódu nahradenia PowerShell na nahradenie presnej zhody

Táto časť ponúka ďalší príklad metódy nahradenia prostredia PowerShell. Tentoraz vás chcem naučiť, ako nahradiť presnú zhodu v reťazci.

Príklad v tejto časti je z tohto stackoverflow.com vlákno. Používateľ, ktorý poslal otázku, chce nahradiť čaj v tomto reťazci, priniesol som čaj pre svoj tím s kávou.

Tu je príkaz, ktorý vykoná túto úlohu…

|_+_|

A tu je výsledok príkazu v PowerShell…

Ako používať metódu nahradenia PowerShell na nahradenie opačnej lomky ()

V tejto podsekcii nahradím jednu opačnú lomku () v tomto reťazci, 23420.1.2021 s dvojitou spätnou lomkou, (\). Tu je príkaz…

|_+_|

Výsledok v PowerShell…

Ako používať metódu nahradenia PowerShell na nahradenie opačnej lomky ()

Ako uvidíte v časti PowerShell Replace Operator tejto príručky, nahradenie jednej spätnej lomky pomocou Replace Operator nie je také jednoduché.

Ako nahradiť neplatné znaky názvu súboru v PowerShell

Operačný systém Windows obsahuje niektoré znaky, ktoré nemožno použiť na pomenovanie súborov alebo priečinkov. Tieto znaky sa všeobecne nazývajú neplatné znaky názvu súboru.

Ak sa pokúsite vytvoriť názov súboru s ktorýmkoľvek zo znakov, zobrazí sa chyba.

Ak teda napíšete skript PowerShell, ktorý používa nejaký výstup na vytvorenie názvu súboru, ale tieto výstupy obsahujú niektorý z neplatných znakov názvu súboru, musíte tieto znaky odstrániť.

Skript, o ktorom sa hovorí v tejto podsekcii, nepoužíva metódu PowerShell Replace. Rozhodol som sa ho však zahrnúť, pretože sa domnievam, že rieši jedinečný problém, ktorému môže väčšina SysAdminov čeliť.

Pokračujeme, mám z toho príklad, o ktorom budem čoskoro diskutovať Stackoverflow.com otázka. Používateľ, ktorý položil otázku, chce pred použitím reťazca na vytvorenie súboru odstrániť neplatné znaky z reťazca.

Okrem toho, ak reťazec obsahuje medzery, používateľ chce ponechať medzery v názve súboru.

Pozrel som sa na riešenia preferované rôznymi používateľmi. Ten s najlepším riešením uverejnil John Longmuir .

V príklade John chce odstrániť všetky neplatné znaky názvu súboru v reťazci „abc* def.txt“. Ako však požadoval pôvodný autor otázky, chce ponechať medzery v reťazci.

Tu je Johnov scenár...

|_+_|

V prvom príkaze uloží reťazec do premennej. Potom v prvej časti druhého príkazu (pred potrubím) konvertuje $ na me premennej do dátového typu [char].

Dátový typ [char] je 16-bitový znak Unicode.

V druhej časti príkazu John prenesie výstup konvertovaného dátového typu [char] do príkazu Where-Object. V rámci bloku skriptu Where-Object volá GetinvalidFileNameChars() Metóda Trieda cesty , [IO.Path] .

Potom povie PowerShellu, aby vrátil iba hodnoty, ktoré nie sú obsiahnuté v súbore GetinvalidFileNameChars() Metóda.

The GetinvalidFileNameChars() Metóda uvádza všetky neplatné znaky názvu súboru.

Nakoniec, po odstránení neplatných znakov názvu súboru, použije PowerShell Join, aby zo všetkých znakov vytvoril reťazec.

Konečný výsledok je... Špeciálne (neplatné znaky názvu súboru) sú preč, ale reťazec sa vráti s medzerami!

Aby bolo používanie jednoduché a založené na pôvodnom skripte, ktorý zverejnila Stackoverflow.com Autor otázky, rozhodol som sa premeniť Johnov skript na funkciu PowerShell.

Tu je funkcia PowerShell, Remove-InvalidFileNameChars.

|_+_|

Ako používať PowerShell Nahraďte operátora viacerými príkladmi

Ako používať PowerShell Nahraďte operátora viacerými príkladmi

V prvej časti tejto príručky som popísal rôzne príklady metódy PowerShell Replace Method. V tejto časti sa zameriam na PowerShell Replace Operator.

Sekcia začína diskusiou o syntaxi PowerShell Replace Operator.

Syntax operátora PowerShell Replace

Syntax PowerShell Replace Operator je…

|_+_| |_+_|

Jedným jasným rozdielom medzi metódou PowerShell a operátorom je spôsob ich použitia. V metóde umiestnite vedľa objektu bodku (.), za ktorou nasleduje názov metódy a zátvorky ().

Naopak, pre operátora pridáte za objekt PowerShell medzeru, za ktorou nasleduje – a názov operátora.

Takže v nasledujúcich príkladoch namiesto použitia .Replace() , budem používať -Vymeňte !

Ako používať metódu nahradenia PowerShell operátorovi znak v reťazci

Na nahradenie znaku i znakom I v reťazci, Victor, použijem príkaz nižšie...

|_+_|

Výsledok v PowerShell…

Na rozdiel od metódy nahradenia prostredia PowerShell, ktorá rozlišuje veľké a malé písmená, operátor nahradenia prostredia PowerShell nie. Takže príkaz nižšie prinesie rovnaký výsledok ako predchádzajúci príkaz...

|_+_|

Tentoraz som použil kapitál I na hodnotovej strane Vymeňte operátor. Všimnite si, že v reťazci nie je veľké I, Victor.

Ak teda píšete skript PowerShell, ktorý potrebuje nahradiť horné a dolné znaky, namiesto metódy nahradenia použite operátor nahradenia.

Ako používať metódu nahradenia prostredia PowerShell na nahradenie viacerých reťazcov v textovom súbore

V časti Metóda nahradenia som uviedol príklad, kde som v tomto textovom súbore nahradil názvy serverov.

Ako používať metódu nahradenia prostredia PowerShell na nahradenie viacerých reťazcov v textovom súbore

Chcem nahradiť názov servera ITGServer1 za ITGServer4. Okrem toho chcem nahradiť ITGServer2 za ITGServer5 a ITGServer3 za ITGServer6.

Tu je verzia skriptu Replace Operator použitá v príklade metódy Replace…

|_+_| Ako sme to urobili v príklade metódy nahradiť, časť operátora nahradiť posledného skriptu je zreťazená.

Ako používať PowerShell Replace Operator na nahradenie reťazcov a znakov, v ktorých sa rozlišujú malé a veľké písmená

Na rôznych miestach tejto príručky som naznačil, že metóda PowerShell Replace Method rozlišuje malé a veľké písmená. PowerShell Replace Operator však nie je.

V tejto časti to chcem ilustrovať na príklade.

Napríklad tento príkaz NENAhradí R, pretože metóda Nahradiť rozlišuje veľké a malé písmená.

|_+_|

Tento príkaz však nahradí R, pretože Replace Operator štandardne NErozlišuje veľké a malé písmená

|_+_|

Ako používať PowerShell Replace Operator na nahradenie opačnej lomky ()

V prvej časti tejto príručky som použil tento príkaz PowerShell na nahradenie jednej spätnej lomky () v tomto reťazci, 23420.1.2021 , s dvojitou spätnou lomkou, (\)…

|_+_|

Ako vidíte, jednoducho som bez problémov použil jednu opačnú lomku v metóde nahradenia.

Ak však zmením posledný príkaz na verziu Nahradiť operátora, zobrazí sa mi chybové hlásenie. Tu je verzia príkazu Replace Operator:

|_+_|

Ak spustím príkaz v PowerShell, dostanem chybové hlásenie...

ako sledovať kórejskú drámu na kodi

Príčinou tejto chyby je, že v PowerShell sa považuje za vzor regulárneho výrazu. Na prekonanie tohto problému potrebujem pridať druhú spätnú lomku do .

To spôsobí, že jedna spätná lomka v bude vyzerať ako dvojitá, \. Druhá spätná lomka však hovorí PowerShellu, aby nepovažoval za vzor regulárneho výrazu.

Takže príkaz bude teraz..

|_+_|

Teraz príkaz funguje ako kúzlo!

To je všetko – komplexný a prepracovaný sprievodca výmenou PowerShell! Dúfam, že vám to pomohlo?

Ak vám to pomohlo, zahlasujte Áno na otázku Bol tento príspevok užitočná nižšie.

Prípadne môžete položiť otázku, zanechať komentár alebo poskytnúť ďalšiu spätnú väzbu pomocou formulára Zanechať odpoveď, ktorý nájdete na konci tejto stránky.

Nakoniec, ak chcete získať viac zón PowerShell tech S, navštívte našu stránku sprievodcu Windows PowerShell ako na to. Veľmi užitočná vám môže byť aj naša stránka Práca z domova.

Referencie a ďalšie čítanie

  1. O metódach
  2. O operátorovi
  3. o_pravidlách_citovania
  4. Ako na to: Definujte typy údajov PowerShell
  5. Trieda cesty
  6. Ako extrahovať podreťazec Powershell z reťazca
  7. Powershell If Else Explained: Syntax a príklady