PowerShell Replace Method and Operator: składnia, przykłady
PowerShell Zastępować może służyć do zastępowania znaków, ciągów, tekstów lub znaków specjalnych. PowerShell ma Zastępować metoda i Zastępować Operator .
Ta strefa S uczy, jak korzystać z PowerShell Zastępować metoda oraz Zastępować Operator do wykonywania różnych zadań zastępczych.
Poradnik składa się z 2 części. Pierwsza sekcja obejmuje Zastępować metoda z wieloma przykładami.
Następnie w drugiej części dowiesz się, jak używać Zastępować Operator , także z wieloma przykładami.
Przeglądaj tematy postów
- Jak korzystać z metody zastępowania PowerShell wieloma przykładami
- Składnia metody zamiany PowerShell
- Jak wyświetlić listę metod w obiekcie PowerShell?
- Jak używać metody zastępowania PowerShell w celu zastąpienia znaku w ciągu?
- Jak używać metody PowerShell Replace do zastępowania wielu ciągów w pliku tekstowym
- Jak korzystać z metody zastępowania PowerShell w celu zastąpienia wielu znaków
- Jak używać metody zastępowania PowerShell w potoku?
- Jak używać metody zastępowania PowerShell, aby zastąpić wszystkie ciągi po znaku?
- Jak korzystać z metody PowerShell Replace, aby zastąpić ciąg w pliku tekstowym
- Jak korzystać z metody PowerShell Replace, aby zastąpić podwójne cytaty pojedynczymi cytatami
- Jak korzystać z metody PowerShell Replace w celu zastąpienia dokładnego dopasowania?
- Jak używać metody PowerShell Replace do zastępowania ukośnika odwrotnego ()
- Jak zastąpić nieprawidłowe znaki nazwy pliku w PowerShell?
- Jak korzystać z PowerShell Zastąp operatora wieloma przykładami
- Składnia PowerShell Replace Operator
- Jak używać metody zastępowania PowerShell jako operatora znaku w ciągu?
- Jak używać metody PowerShell Replace do zastępowania wielu ciągów w pliku tekstowym
- Jak używać PowerShell Zastąp operator w celu zastąpienia ciągów i znaków uwzględniających wielkość liter
- Jak używać PowerShell Zastąp operator, aby zastąpić ukośnik odwrotny ()
- Referencje i dalsza lektura
Jak korzystać z metody zastępowania PowerShell wieloma przykładami
Jak wspomniałem we wstępie, w tej sekcji dowiesz się, jak używać Wymień metodę . Sekcja zaczyna się od składni Wymień metodę .
Składnia metody zamiany PowerShell
Składnia Zastępować metoda jest…
|_+_| |_+_|
Składnia robi to samo. Jedynym powodem, dla którego mam oba, jest zilustrowanie, że możesz zastąpić znaki lub ciągi.
Pierwsza składnia pokazuje, jak używać metody zastępowania programu PowerShell do zastępowania znaków. Jednak druga składnia pokazuje, jak zastąpić ciąg.
Jak wyświetlić listę metod w obiekcie PowerShell?
Wspomniałem już, że PowerShell ma metodę Replace i Operator. Możesz wyświetlić listę wszystkich metod dostępnych w obiekcie PowerShell, podłączając obiekt do Uzyskaj członka Komenda.
Na przykład, aby znaleźć metody dostępne w tym obiekcie, uruchom poniższe polecenie:
|_+_|Polecenie zwraca kilka metod. Podkreśliłem Zastępować metoda na poniższym zrzucie ekranu.
Dodatkowo istnieje inny sposób na uruchomienie Uzyskaj członka Komenda. Zamiast wbijać obiekt w Uzyskaj członka polecenie, możesz określić obiekt w parametrze InputObject z Uzyskaj członka .
Oto przykład…
|_+_|Wynik zawiera również listę metod dostępnych w obiekcie – w tym Zastępować metoda .
Ostatnia rzecz, zanim przejdę do następnej podsekcji, jeśli spojrzysz na kolumnę Opis wyniku ostatnich dwóch poleceń, ma ona składnię metody.
Jest to bardzo przydatne, ponieważ mówi, jak używać metody.
Jak używać metody zastępowania PowerShell w celu zastąpienia znaku w ciągu?
Wspomniałem w podsekcji Składnia, że możesz zastępować znaki lub ciągi. Aby dać prosty przykład, chcę zastąpić V w Victorze małą literą v.
Oto polecenie…
|_+_|A oto wynik w PowerShell…
W wartościach metody PowerShell Replace jest rozróżniana wielkość liter. Wartości będą sprawdzać, czy wielkość liter jest dokładna. Na przykład, jeśli próbowałem zastąpić małą literę v w Victor i spróbować zastąpić ją A, polecenie zwróci ten sam wynik.Oto polecenie, które opisałem w powyższej notatce…
|_+_|Kiedy uruchomiłem to polecenie w PowerShell, zwróciło ono Victor, oryginalny obiekt, ponieważ w łańcuchu nie ma małej litery v, Victor!
W PowerShell Zastępować Operator tego przewodnika, dowiesz się, że – w przeciwieństwie do metody wymiany – Zastępować Operator nie jest rozróżniana wielkość liter.Jak używać metody PowerShell Replace do zastępowania wielu ciągów w pliku tekstowym
Kontynuując przemyślenia w tym przewodniku, możesz również zastąpić wiele ciągów w pliku tekstowym.
W tym przykładzie mam plik tekstowy z kilkoma nazwami serwerów. Oto zrzut ekranu pliku tekstowego.
Chcę zastąpić nazwę serwera ITGServer1 nazwą ITGServer4. Dodatkowo chcę zastąpić ITGServer2 ITGServer5 oraz ITGServer3 ITGServer6.
Oto skrypt, który wykona zadanie…
|_+_|Pierwsza linia skryptu używa Pobierz zawartość aby zaimportować zawartość pliku tekstowego do PowerShell. Następnie przesyła wynik do Dla każdego obiektu .
Wreszcie, w ciągu Dla każdego obiektu pętla, PowerShell używa zmiennej atematycznej $_ utworzonej dla każdego obiektu przez Dla każdego obiektu zamienić pozycje zgodnie z opisem.
Połączyłem metodę PowerShell Replace. W przeciwnym razie skrypt da niepożądany wynik.
Aby uruchomić skrypt, skopiuj go do PowerShell ISE i uruchom.
W ostatniej wersji skryptu PowerShell wyświetla wynik w konsoli. Możesz napisz wynik poprzez przesyłanie istniejących poleceń do Zawartość zestawu Komenda.
Oto zaktualizowany skrypt. Aby uniknąć błędów zapisu, zapisałem dane wyjściowe poprzedniej wersji skryptu do zmiennej. Następnie połączyłem zmienną do Zawartość zestawu Komenda.
|_+_|Oto wynik nowego pliku tekstowego…
Jak korzystać z metody zastępowania PowerShell w celu zastąpienia wielu znaków
Przetwarzanie zastępowania wielu ciągów w pliku tekstowym jest takie samo, jak zastępowanie wielu znaków w ciągu. Z przykładu w ostatniej sekcji, lepiej jest połączyć metodę Replace.
W tym przykładzie chcę zastąpić M w Metodzie T. Dodatkowo chcę zastąpić d D.
Oto polecenie…
|_+_|A wynik w PowerShell…
Jak używać metody zastępowania PowerShell w potoku?
W ostatniej sekcji uruchomiłem to polecenie bez potoku, Metoda do Zastępować Metoda:
|_+_|Mogę uruchomić to samo polecenie, ale tym razem potok do metody Replace. Jednak po przekazaniu go do potoku muszę wywołać ciąg ze zmienną automatyczną potoku $_.
Polecenie będzie musiało zostać zmodyfikowane, jak pokazano poniżej:
|_+_|Jak widać na poniższym zrzucie ekranu, ostatnie polecenie daje taki sam wynik, jak polecenie w ostatniej podsekcji…
Jak używać metody zastępowania PowerShell, aby zastąpić wszystkie ciągi po znaku?
W przykładzie w tym podrozdziale chcę zastąpić wszystko po ostatnim ukośniku odwrotnym, w tym ciągu – c:programfiles vversion8uninstall.exe – pustym ciągiem.
Te dwie komendy załatwią sprawę.
|_+_|Pierwsze polecenie zapisuje ciąg w zmiennej. Następnie drugie polecenie używa metody PowerShell Replace, aby zastąpić wszystko po ciągu pustą spacją.
W efekcie wszystko po jest usuwane. Oto wynik poleceń..
Jak korzystać z metody PowerShell Replace, aby zastąpić ciąg w pliku tekstowym
Mam plik tekstowy o nazwie Processfile1.txt . Plik tekstowy ma wartość AgentSvc, którą chcę zastąpić AgentSvc_New.
Poniższe polecenia dokończą zadanie…
|_+_|Pierwsze polecenie zapisuje ścieżkę pliku do zmiennej. Ponadto drugie polecenie zapisuje wartość, którą chcę znaleźć w innej zmiennej.
Dodatkowo trzecia linia zapisuje łańcuch zamiany w innej zmiennej. Wreszcie, w ostatnim poleceniu, wywołuję metodę Replace w wyniku działania Pobierz zawartość Komenda.
Następnie w ramach metody Replace używam wartości zapisanej w zmiennych $find i $replace. Następnie przekieruj wyjście do Zawartość zestawu który aktualizuje plik tekstowy o nowe wartości.
Po uruchomieniu poleceń, oto nowa wartość w pliku tekstowym.
Jak korzystać z metody PowerShell Replace, aby zastąpić podwójne cytaty pojedynczymi cytatami
W tym podrozdziale chcę zastąpić podwójny cudzysłów w 234″20.01.2021 z pojedynczymi cudzysłowami. Oto polecenia…
|_+_|Pierwsza linia zapisuje ciąg, 234″20.01.2021 w zmiennej. Następnie w drugim wierszu użyłem metody PowerShell Replace, aby zamienić podwójny cudzysłów w ciągu na pojedyncze cudzysłowy.
Sztuczka polega na zastosowaniu i wykorzystaniu reguł cytowania PowerShell. Program PowerShell używa zarówno pojedynczych, jak i podwójnych cudzysłowów, aby określić ciąg literału.
jak zmusić Minecrafta do korzystania z GPU
W tym przykładzie chcemy zamienić podwójne cudzysłowy, , w ciągu na pojedyncze cudzysłowy, . Jeśli jednak pamiętasz, w PowerShell Replace Method, potrzebujesz również cudzysłowów, aby określić wartość, którą chcesz zastąpić, i nową wartość.
Tak więc, aby określić bieżącą wartość (podwójne cudzysłowy) w poleceniu Zamień, zawijamy podwójny cudzysłów w pojedyncze cudzysłowy – „”.
Co więcej, aby określić nową wartość (pojedyncze cudzysłowy), należy je otoczyć podwójnymi cudzysłowami – .
Ponadto, ze względu na obecność podwójnych cudzysłowów w oryginalnym ciągu, 234″20.01.2021 , aby zapisać ciąg w zmiennej, musiałem owinąć ciąg w pojedyncze cudzysłowy.
polecenia administratora lista roblox
Wracając do poleceń…
|_+_|Oto wynik w PowerShell…
Tak proste, jak wygląda ten przykład, jeśli nie rozumiesz zasad cytowania PowerShell, będziesz miał trudności z uzyskaniem PowerShell do wykonania tego zadania!
Jak korzystać z metody PowerShell Replace w celu zastąpienia dokładnego dopasowania?
W tej sekcji przedstawiono inny przykład metody zamiany programu PowerShell. Tym razem chcę Cię nauczyć, jak zamienić dokładne dopasowanie w ciągu.
Przykład w tej sekcji pochodzi z tego stackoverflow.com nitka. Użytkownik który wysłał pytanie chce wymienić herbatę w tym ciągu, przywiozłem dla mojej ekipy herbatę z kawą.
Oto polecenie, które wykonuje zadanie…
|_+_|A oto wynik polecenia w PowerShell…
Jak używać metody PowerShell Replace do zastępowania ukośnika odwrotnego ()
W tej podsekcji zastąpię pojedynczy ukośnik odwrotny () w tym ciągu, 23420.01.2021 z podwójnym ukośnikiem odwrotnym (\). Oto polecenie…
|_+_|Wynik w PowerShell…
Jak zobaczysz w sekcji PowerShell Replace Operator tego przewodnika, zastąpienie pojedynczego ukośnika odwrotnego za pomocą funkcji Replace Operator nie jest takie proste.
Jak zastąpić nieprawidłowe znaki nazwy pliku w PowerShell?
System operacyjny Windows zawiera kilka znaków, których nie można używać do nazywania plików lub folderów. Znaki te są ogólnie nazywane znakami nieprawidłowych nazw plików.
Jeśli spróbujesz utworzyć nazwę pliku z dowolnym ze znaków, pojawi się błąd.
Tak więc, jeśli piszesz skrypt PowerShell, który używa niektórych danych wyjściowych do utworzenia nazwy pliku, ale te dane wyjściowe zawierają dowolny z nieprawidłowych znaków nazwy pliku, musisz usunąć te znaki.
Skrypt omówiony w tej podsekcji nie korzysta z metody PowerShell Replace. Jednak zdecydowałem się go uwzględnić, ponieważ uważam, że rozwiązuje unikalny problem, z którym może się zmierzyć większość administratorów SysAdmin.Idąc dalej, dostałem przykład, który krótko omówię Stackoverflow.com pytanie. Użytkownik, który zadał pytanie, chce usunąć nieprawidłowe znaki z ciągu przed użyciem ciągu do utworzenia pliku.
Dodatkowo, jeśli ciąg zawiera spacje, użytkownik chce zachować spacje w nazwie pliku.
Przyjrzałem się rozwiązaniom preferowanym przez różnych użytkowników. Ten z najlepszym rozwiązaniem napisał: John Longmuir .
W przykładzie Johna chce usunąć wszystkie nieprawidłowe znaki nazwy pliku w ciągu „abc* def.txt”. Jednak zgodnie z prośbą pierwotnego autora pytania chce zachować spacje w ciągu.
Oto scenariusz Johna…
|_+_|W pierwszym poleceniu zapisuje ciąg w zmiennej. Następnie w pierwszej części drugiego polecenia (przed rurociągiem) konwertuje $ na me zmienna do typu danych [char].
Typ danych [char] to 16-bitowy znak Unicode.W drugiej części polecenia John przesyła dane wyjściowe przekonwertowanego typu danych [char] do polecenia Where-Object. W bloku skryptu Where-Object wywołuje GetinvalidFileNameChars() Metoda Klasa ścieżki , [Ścieżka.IO] .
Następnie mówi PowerShellowi, aby zwracał tylko wartości, które nie są zawarte w GetinvalidFileNameChars() Metoda.
ten GetinvalidFileNameChars() Metoda wyświetla wszystkie nieprawidłowe znaki nazw plików.Wreszcie, po usunięciu nieprawidłowych znaków nazwy pliku, używa PowerShell Join, aby przekształcić wszystkie znaki w ciąg.
Ostateczny wynik to… Specjalne (nieprawidłowe znaki nazwy pliku) zniknęły, ale ciąg jest zwracany ze spacjami!
Aby był łatwy w użyciu i oparty na oryginalnym skrypcie opublikowanym przez Stackoverflow.com autor pytania, postanowiłem przekształcić skrypt Johna w funkcję PowerShell .
Oto funkcja PowerShell, Remove-InvalidFileNameChars.
|_+_|Jak korzystać z PowerShell Zastąp operatora wieloma przykładami
W pierwszej części tego przewodnika omówiłem różne przykłady metody PowerShell Replace. W tej sekcji skupię się na PowerShell Replace Operator.
Sekcja zaczyna się od omówienia składni PowerShell Replace Operator.
Składnia PowerShell Replace Operator
Składnia PowerShell Replace Operator to…
|_+_| |_+_|Jedną wyraźną różnicą między metodą PowerShell a operatorem jest sposób ich użycia. W metodzie umieszczasz kropkę (.) obok obiektu, a następnie nazwę metody i () nawiasy kwadratowe.
Wręcz przeciwnie, w przypadku operatora dodajesz spację po obiekcie PowerShell, a następnie – i nazwę operatora.
Tak więc w poniższych przykładach zamiast używać .Zastępować() , będę używał -Zastępować !
Jak używać metody zastępowania PowerShell jako operatora znaku w ciągu?
Aby zamienić znak i na I w ciągu, Victor, użyję poniższego polecenia…
|_+_|Wynik w PowerShell…
W przeciwieństwie do metody PowerShell Replace, w której rozróżniana jest wielkość liter, PowerShell Replace Operator nie jest. Tak więc poniższe polecenie da ten sam wynik, co poprzednie polecenie…
|_+_|Tym razem użyłem kapitału I po stronie wartości Zastępować operator. Zauważ, że w łańcuchu nie ma dużego I, Victor.
Tak więc, jeśli piszesz skrypt PowerShell, który musi zastąpić górne i dolne znaki, użyj operatora Replace zamiast metody Replace.
Jak używać metody PowerShell Replace do zastępowania wielu ciągów w pliku tekstowym
W sekcji Replace Method podałem przykład, w którym zastąpiłem nazwy serwerów w tym pliku tekstowym.
Chcę zastąpić nazwę serwera ITGServer1 nazwą ITGServer4. Dodatkowo chcę zastąpić ITGServer2 ITGServer5 oraz ITGServer3 ITGServer6.
Oto wersja skryptu Replace Operator użytego w przykładzie Replace Method…
|_+_| Podobnie jak w przykładzie Replace Method, część operatora Replace ostatniego skryptu jest połączona w łańcuch.Jak używać PowerShell Zastąp operator w celu zastąpienia ciągów i znaków uwzględniających wielkość liter
W różnych punktach tego przewodnika sugerowałem, że w metodzie zastępowania programu PowerShell rozróżniana jest wielkość liter. Jednak PowerShell Replace Operator nie jest.
W tej sekcji chcę zilustrować przykładem.
Na przykład to polecenie NIE zastąpi R, ponieważ w metodzie Replace jest rozróżniana wielkość liter.
|_+_|
Jednak to polecenie zastąpi R, ponieważ domyślnie zamień operator NIE rozróżnia wielkości liter
|_+_|
Jak używać PowerShell Zastąp operator, aby zastąpić ukośnik odwrotny ()
W pierwszej części tego przewodnika użyłem tego polecenia PowerShell, aby zastąpić pojedynczy ukośnik odwrotny () w tym ciągu, 23420.01.2021 , z podwójnym ukośnikiem odwrotnym, (\)…
|_+_|Jak widać, bez problemu użyłem pojedynczego ukośnika odwrotnego w metodzie zamiany.
Jeśli jednak zmienię ostatnie polecenie na wersję Replace Operator, otrzymam komunikat o błędzie. Oto wersja polecenia Zamień operatora:
|_+_|Jeśli uruchomię polecenie w PowerShell, otrzymam komunikat o błędzie…
Przyczyną tego błędu jest to, że w PowerShell jest traktowany jako wzorzec wyrażenia regularnego. Aby rozwiązać ten problem, muszę dodać drugi ukośnik odwrotny w .
Spowoduje to, że pojedynczy ukośnik odwrotny w , będzie wyglądał jak podwójny, \. Jednak drugi ukośnik odwrotny informuje program PowerShell, aby nie traktował jako wzorca wyrażenia regularnego.
Więc polecenie będzie teraz ..
|_+_|Teraz polecenie działa jak czar!
To wszystko – kompleksowy i odświeżony przewodnik PowerShell Replace! Mam nadzieję, że okazało się to pomocne?
Jeśli uznałeś to za pomocne, uprzejmie zagłosuj tak do Czy ten post był pomocny w poniższym pytaniu.
Alternatywnie możesz zadać pytanie, zostawić komentarz lub przekazać więcej opinii za pomocą formularza Zostaw odpowiedź, który znajduje się na końcu tej strony.
Aby uzyskać więcej informacji o strefach PowerShell tech S, odwiedź naszą stronę z instrukcjami dotyczącymi programu Windows PowerShell. Bardzo pomocna może być również nasza strona Praca z Home.
Referencje i dalsza lektura
- O metodach
- O Operatorze
- about_Quoting_Rules
- Instrukcje: definiowanie typów danych PowerShell
- Klasa ścieżki
- Jak wyodrębnić podciąg Powershell z ciągu?
- Powershell, jeśli wyjaśniono inaczej: składnia i przykłady


