Powershell String mit Groß- und Kleinschreibung
Hallo
Ich möchte gerne eine Druckermigration durchführen und haben ein entsprechendes Powershell Skript, welches die Drucker ausliest, den Standarddrucker erkennt, die Drucker löscht, neu einbindet unrd den standaddrucker wieder setzt.
Bei der Einbindung der neuen Drucker wird der alte Druckerserver entfernt und der neue gesetzt.
Jetzt habe ich festgestellt, dass der alte Druckerserver verschiedenst geschrieben wurde:
Server01
SERVER01
server01
Es kann sein, dass es noch weitere Schreibweisen gibt und ich finde keine Lösung, wie alle Schreibweisen in der Quelle beachten kann.
Aktuell löse ich es so, dass ich das Skript einfach dreimal hintereinander ablaufen lasse, mit verschiedener Schreibweise des Quellservers. Es kann aber sein, dass es noch andere Schreibweisen gibt.
Hier das Skript:
$old_printserver = "Server01"
$new_printserver = "server02"
foreach($element in $printers) { $printer.AddPrinterConnection($element.replace("$old_printserver", "$new_printserver")) }
$printer = Get-WmiObject Win32_Printer | ? { $_.name -like "*$default_printer*"}
$printer.SetDefaultPrinter()
$old_printserver = "SERVER01"
$new_printserver = "server02"
.
.
.
$old_printserver = "server01"
$new_printserver = "server02"
Könnt Ihr mich unterstützen und mir eine Hilfestellung geben, wie ich das case sensitiv in $old_printserver = "[servername]" "ausschalten" kann?
Vielen Dank!
Beste Grüße
Saesch
Ich möchte gerne eine Druckermigration durchführen und haben ein entsprechendes Powershell Skript, welches die Drucker ausliest, den Standarddrucker erkennt, die Drucker löscht, neu einbindet unrd den standaddrucker wieder setzt.
Bei der Einbindung der neuen Drucker wird der alte Druckerserver entfernt und der neue gesetzt.
Jetzt habe ich festgestellt, dass der alte Druckerserver verschiedenst geschrieben wurde:
Server01
SERVER01
server01
Es kann sein, dass es noch weitere Schreibweisen gibt und ich finde keine Lösung, wie alle Schreibweisen in der Quelle beachten kann.
Aktuell löse ich es so, dass ich das Skript einfach dreimal hintereinander ablaufen lasse, mit verschiedener Schreibweise des Quellservers. Es kann aber sein, dass es noch andere Schreibweisen gibt.
Hier das Skript:
$old_printserver = "Server01"
$new_printserver = "server02"
- Alle Drucker auslesen, die als Netzwerkdrucker markiert sind und in ein Array speichern.
- Standarddrucker auslesen und in eine Variable speichern
- Alle Drucker löschen, die im Array stehen.
- Neue Drucker anlegen, welche im Array stehen.
foreach($element in $printers) { $printer.AddPrinterConnection($element.replace("$old_printserver", "$new_printserver")) }
- Standarddrucker wieder definieren
$printer = Get-WmiObject Win32_Printer | ? { $_.name -like "*$default_printer*"}
$printer.SetDefaultPrinter()
$old_printserver = "SERVER01"
$new_printserver = "server02"
.
.
.
$old_printserver = "server01"
$new_printserver = "server02"
Könnt Ihr mich unterstützen und mir eine Hilfestellung geben, wie ich das case sensitiv in $old_printserver = "[servername]" "ausschalten" kann?
Vielen Dank!
Beste Grüße
Saesch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 487932
Url: https://administrator.de/contentid/487932
Ausgedruckt am: 15.11.2024 um 21:11 Uhr
5 Kommentare
Neuester Kommentar
Grüezi wohl.
Wenn man das so macht sollte man dann aber auch Regex-Sonderzeichen im Namen escapen
Alternativ geht's auch indem man die Strings vorher in Klein- oder Großbuchstaben konvertiert
Wenn man das so macht sollte man dann aber auch Regex-Sonderzeichen im Namen escapen
$element -replace [regex]::Escape($old_printserver), $new_printserver
Alternativ geht's auch indem man die Strings vorher in Klein- oder Großbuchstaben konvertiert
$element.toLower().replace($old_printserver.toLower(),$new_printserver)