Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Connectionstring anpassen (zwischen 2 Zeichen) mit Powershell

Mitglied: Oertey

Oertey (Level 1) - Jetzt verbinden

12.06.2019, aktualisiert 21:11 Uhr, 276 Aufrufe, 5 Kommentare

Hallo Zusammen,

ich möchte über die Powershell einen Connectionstring anpassen.

Beispiel:
<connection.connection_string>Data Source=SERVER;Initial Catalog=DATENBANK;User Id=NUTZER;Password=PASSWORT;</connection.connection_string>

In diesem Beispiel sollen SERVER,DATENBANK,NUTZER,PASSWORT ersetzt werden, diese können beliebige Werte enthalten.

Hier wollte ich jetzt versuchen in "Source=SERVER;" alles zwischen "=" und ";" auszulesen und mit einer Variable zu ersetzen.

Und zwar hiermit:
$con = Get-Content .\Settings.xml
$con | % { $_.Replace('(?<=Source=).*?(?=;)', '$DBSERVER') } | Set-Content .\Settings.xml

und dann hiermit:
Get-Content .\Settings.xml (replace 'Source=".*?;', 'Source="$DBSERVER"') | Set-Content .\Settings.xml

01.
Fehler beim Analysieren der Befehlszeile (null).
02.
Get-Content : Es wurde kein Positionsparameter gefunden, der das Argument "Keine Dateien ersetzt" akzeptiert.
03.
In G:\SCRIPTS\HSD\string.ps1:13 Zeichen:8
04.
+ $con = Get-Content .\Settings.xml (replace 'Source=".*?;', 'Data Sour ...
05.
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
06.
    + CategoryInfo          : InvalidArgument: (:) [Get-Content], ParameterBindingException
07.
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommand
Könnt ihr mir hier weiterhelfen?
Mitglied: Pjordorf
12.06.2019 um 21:07 Uhr
Hallo,

Zitat von Oertey:
Get-Content : Es wurde kein Positionsparameter gefunden, der das Argument "Keine Dateien ersetzt" akzeptiert.
In G:\SCRIPTS\HSD\string.ps1:13 Zeichen:8
Schon mal Gelesen und darüber nachgedacht was dir Powershell sagen will? Du hast eine Fehler in dein PS1 Skript eingebaut. Und wenn jemand hier dir den Fehler beheben soll, Poste doch bitte dein Skript.

Gruß,
Peter
Bitte warten ..
Mitglied: Oertey
12.06.2019, aktualisiert um 21:29 Uhr
Dies ist das Script:

01.

02.

03.
$DBSERVER = 12345
04.
########## CONNECTION-STRING SUCHEN UND ERSETZEN ##########
05.
Write-Host ""
06.
Write-Host -ForegroundColor Blue "########## CONNECTION-STRING SUCHEN UND ERSETZEN ##########"
07.
Write-Host ""
08.

09.

10.
#$con = Get-Content .\Settings.xml
11.
#$con | % { $_.Replace('(?<=Source=).*?(?=;)', '$DBSERVER') } | Set-Content .\Settings.xml
12.

13.
Get-Content .\Settings.xml (replace 'Source=".*?;', 'Source="$DBSERVER"') | Set-Content .\Settings.xml

EDIT: ich sehe gerade das ich noch eine Variable daraus gemacht hatte:
$con = Get-Content .\Settings.xml (replace 'Source=".*?;', 'Source="$DBSERVER"') | Set-Content .\Settings.xml

Powershell bemängelt das Get-Content, kann es mir aber nicht erklären.
Bitte warten ..
Mitglied: 139920
LÖSUNG 13.06.2019, aktualisiert um 12:57 Uhr
XML Dateien bearbeitet man grundsätzlich mit einem Parser!
Also lade das XML File auch so das man es effektiv und korrekt mit einem XML-Object bearbeitet:
01.
$db = "NEUE DATENBANK"
02.
$server = "NEUER SERVER"
03.
$userID = "Neue User ID"
04.
$password = "Neues Password"
05.
$file = "D:\datei.xml"
06.

07.
$xml = [xml](gc $file)
08.
$node = $xml.SelectSingleNode('//connection.connection_string')
09.
$node.innerText = $node.innerText-replace '(?<=Data Source\s*=)[^;]+',$server
10.
$node.innerText = $node.innerText -replace '(?<=Initial Catalog\s*=)[^;]+',$db
11.
$node.innerText = $node.innerText -replace '(?<=User Id\s*=)[^;]+',$userID
12.
$node.innerText = $node.innerText -replace '(?<=Password\s*=)[^;]+',$password
13.
$xml.Save($file)
Da du keine weiteren Infos zur XML Datei bereitstellst, ist das mit Vorbehalt zu genießen da wir weder entsprechend definierte Namespaces noch sonstige Infos des XML Files hier sehen können...
Bitte warten ..
Mitglied: erikro
13.06.2019 um 14:12 Uhr
Moin,

Zitat von Oertey:
01.
> Get-Content .\Settings.xml (replace 'Source=".*?;', 'Source="$DBSERVER"') | Set-Content .\Settings.xml
Powershell bemängelt das Get-Content, kann es mir aber nicht erklären.

Ganz einfach: Weil das so falsch ist:

01.
PS E:\> replace("blah","blubb")
02.
Pfad nicht gefunden - E:\
03.
Keine Dateien ersetzt
Das erklärt Deine Fehlermeldung, denn "Keine Datei ersetzt" ist tatsächlich ein Wert, den get-content nicht an der Position verarbeiten kann. Dein Konstrukt wird so ausgewertet:

1. Auswertung der Funktion replace() -> Rückgabe siehe oben.
2. Übergabe des Werts von 1. an get-content
3. Auswertung des Befehls get-content
-path "settings.xml"
-readcount "Keine Datei ersetzt"

Und Letzteres läuft gegen die Wand. Wie das korrekt aussieht, siehst Du im Beitrag vom shellschrubber.

hth

Erik
Bitte warten ..
Mitglied: Oertey
13.06.2019, aktualisiert um 19:23 Uhr
Danke shellschrubber, funktioniert genau so wie es soll

Danke auch an erikro für die Erklärung.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell 2 DataTable Daten mergen
gelöst Frage von H41mSh1C0RBatch & Shell6 Kommentare

Hi in die Runde, ich habe 2 DataTables, eine mit X Spalten und eine mit Y Spalten. Der Inhalt ...

Batch & Shell
2 Scripts in Powershell verbinden
gelöst Frage von ProRoxBatch & Shell2 Kommentare

Hallo liebes Admin-Team, nach längerer Zeit googlen komme ich an keine Antwort. Und zwar habe ich eine Frage, wie ...

Batch & Shell
PowerShell: Umbenennung erster 2 Zahlen
gelöst Frage von janelsaesserBatch & Shell1 Kommentar

Hallo zusammen, ich habe in einem Ordner über 4000 Bilder. Die Bilder haben alle eine 6-stellige Nummer als Dateinamen. ...

Batch & Shell
2 CSV Dateien per Powershell vergleichen
gelöst Frage von 131181Batch & Shell2 Kommentare

Erst mal hallo an alle. Ich möchte gerne 2 CSV Dateien vergleichen in beiden steht grob das gleiche drin. ...

Neue Wissensbeiträge
Windows 10

Sandy-Bridge plus Nvidia plus Win10 1903 braucht Hotfix

Information von DerWoWusste vor 9 StundenWindows 10

Es gibt ein Problem in der seltenen Konstellation Nvidia-Grafikkarte/Sandy-Bridge-CPU/Win10v1903: die von Nvidia vorgeschlagenen Treiber lassen sich nicht installieren. verlinkt ...

Off Topic
Computermuseum Stuttgart
Tipp von NixVerstehen vor 16 StundenOff Topic1 Kommentar

Hallo zusammen, letzte Woche habe ich mit meinem 16-jährigen Sohn das Computermuseum Stuttgart (Uni Stuttgart) besucht, um ihm und ...

Windows 10
Windows 10: Netzwerk zeigt Fehler 0x80070035
Tipp von anteNope vor 21 StundenWindows 105 Kommentare

Moin zusammen, ich hatte gerade mal wieder das Vergnügen mit dem obigen Fehler. Unter Borns Blog ist das beschreiben: ...

Windows 10

Bug: Windows 10 Enterprise LTSC erhält Funktionsupdate angeboten

Information von kgborn vor 1 TagWindows 105 Kommentare

Der Fehler ist mittlerweile zwar korrigiert, aber ich denke, ich stelle die Info doch mal hier für Leute ein, ...

Heiß diskutierte Inhalte
Server
Wie kommunizieren Server ?
gelöst Frage von A12345Server25 Kommentare

Hallo liebe Forumsgemeinde, ich bin ein absoluter Neuling und habe nicht viel Ahnung von der IT. Allerdings habe ich ...

Server
ODBC Verbindung zu MYSQL funktioniert beim Einrichten nicht
Frage von martenkServer22 Kommentare

Guten Tag, versuche gerade von meinem PC eine ODBC Testverbindung zu meinem Server (bei 1und1) aufzubauen habe dazu mysql ...

Netzwerkmanagement
VLAN zwischen HP Switchen
gelöst Frage von SykoNFNetzwerkmanagement20 Kommentare

Moin Moin, ich versuche eine ganz einfachen Aufbau von VLAN zu erreichen. Ich habe zwei Switche, HP 1920-48G und ...

Windows Netzwerk
Standardgateway bei Clients mit statischer IP Adresse ändern
Frage von sammy65Windows Netzwerk19 Kommentare

Hallo miteinander, Wie kann ich über eine GPO die Standardgateway an meinen Clients ändern? Ich habe das versucht?: Es ...