gelöst Powershell Bearbeiten der Ausgabe

Mitglied: kaspersky

kaspersky (Level 1) - Jetzt verbinden

11.08.2020 um 14:28 Uhr, 259 Aufrufe, 9 Kommentare

Hi,
ich möchte mit meinem Skript auf unseren Infobloxx DNS Appliances DNS Einträge anlegen, aktulisieren, bzw löschen. Ich lese damit die bConnect Schnittstelle unseres Baramundiservers aus.

Die Ausgabe soll direkt eine bereits fertige API bedienen. Die Ausgabe gibt eine Liste mit PCnamen und IPadressen der aktiven Clients aus. Inaktive scheinen ohne IPadresse auf, diese sollen gelöscht werden.
Abfrage im Skript:

Initialize-bConnect -Server "baramundi-dev.domain.at" -Credentials $creds -Port 443 -AcceptSelfSignedCertifcate
Get-bConnectEndpoint | select Hostname, PrimaryIP | Out-String -stream | select-object -skip 3 > hosts

Die Ausgabe soll nach der Fertigstellung direkt an die API Schnittstelle ohne ein Textfile erfolgen. Hier die Ausgabe der Abfrage:

Win10-2009-MF XXX.244.21.98
HYPNOS XXX.244.113.197
H81200-002-D XXX.244.222.171
DEVPC-Urducea

Die Ausgabe soll dahingehend formattiert werden:
Ein Eintrag mit aktueller IPadresse soll in der Ausgabe wie folgt an die API übergeben werden, wobei es egal ist ob ein lehrzeichen oder ein TAB zwischen den drei Blöcken der Ausgabe steht:

set DNS entry Win10-2009-MF XXX.244.21.98

Die zu löschenden DNS Einträge sollen nur den PC Namen und davor "no IP" stehen haben.

no IP DEVPC-Urducea

Wie kann ich das mit dem bereits vorhandenem Skriptteil so umbauen, dass das funktioniert?
Vielen Dank.
LG, Bernhard
Mitglied: 145033
LÖSUNG 11.08.2020, aktualisiert 12.08.2020
Bitte warten ..
Mitglied: kaspersky
12.08.2020, aktualisiert um 07:37 Uhr
Vielen Dank, ich habe die Schleife eingebaut, allerdings funktioniert es so nicht. Möglicherweise habe ich was nicht so verstanden.


Initialize-bConnect -Server "baramundi-dev.boku-it-dev.boku.ac.at" -Credentials $creds -Port 443 -AcceptSelfSignedCertifcate
Get-bConnectEndpoint | select Hostname, PrimaryIP | Out-String -stream | select-object -skip 3 | %{
If ($_.PrimaryIP -ne ''}{
"set DNS entry $($_.Hostname) $($_.PrimaryIP)"
}else{
"no IP $($_.Hostname)"
}
} > hosts

Ergibt folgenden Fehleroutput:
PS C:\Users\Administrator.BOKU-IT-DEV\Desktop> .\bfinster.ps1
At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:13 char:28

If ($_.PrimaryIP -ne ''}{

~

Missing closing ')' after expression in 'If' statement.
At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:18 char:1

} > hosts

~

Unexpected token '}' in expression or statement.
+ CategoryInfo : ParserError: ( [], ParseException
+ FullyQualifiedErrorId : MissingEndParenthesisAfterStatement

Füge ich dieSchleife gleich nach dem Get-bConnectEndpoint ein bekomme ich folgenden Fehler:

PS C:\Users\Administrator.BOKU-IT-DEV\Desktop> .\bfinster.ps1
At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:12 char:23

Get-bConnectEndpoint | | %{

~

An empty pipe element is not allowed.
At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:13 char:28

If ($_.PrimaryIP -ne ''}{

~

Missing closing ')' after expression in 'If' statement.
At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:18 char:1

} | Out-String -stream | select-object -skip 3 > hosts

~

Unexpected token '}' in expression or statement.
At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:18 char:3

} | Out-String -stream | select-object -skip 3 > hosts

~

An empty pipe element is not allowed.
+ CategoryInfo : ParserError: ( [], ParseException
+ FullyQualifiedErrorId : EmptyPipeElement

Wenn die Abfrage nur Ihre Abfrage verwende habe ich folgenden Fehler:

PS C:\Users\Administrator.BOKU-IT-DEV\Desktop> .\bfinster.ps1
At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:13 char:28

If ($_.PrimaryIP -ne ''}{

~

Missing closing ')' after expression in 'If' statement.
At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:18 char:1

}

~

Unexpected token '}' in expression or statement.
+ CategoryInfo : ParserError: ( [], ParseException
+ FullyQualifiedErrorId : MissingEndParenthesisAfterStatement

PS C:\Users\Administrator.BOKU-IT-DEV\Desktop>

Powershell ist kompliziert, in der Bash wäre das viel einfacher zu zerlegen.
Vielen Dank.
LG, Bernhard
Bitte warten ..
Mitglied: 145033
12.08.2020, aktualisiert um 07:56 Uhr
Möglicherweise habe ich was nicht so verstanden.
Ja hast du. Meine Zeile ersetzt deine zweite Zeile oben komplett du kannst das nicht einfach so an deine eigene dran hängen, Powershell arbeitet objektorientiert also nutze es auch so 😉
Bitte warten ..
Mitglied: kaspersky
12.08.2020 um 08:19 Uhr
Vielen Dank für die schnelle Antwort,

Initialize-bConnect -Server "baramundi-dev.boku-it-dev.boku.ac.at" -Credentials $creds -Port 443 -AcceptSelfSignedCertifcate
Get-bConnectEndpoint | %{
If ($_.PrimaryIP -ne ''}{
"set DNS entry $($_.Hostname) $($_.PrimaryIP)"
}else{
"no IP $($_.Hostname)"
}
}

Ich habe die Zeile eh so verwendet, allerdings funktioniert es nicht ganz:

At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:14 char:28

If ($_.PrimaryIP -ne ''}{

~

Missing closing ')' after expression in 'If' statement.
At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:19 char:1

}

~

Unexpected token '}' in expression or statement.
+ CategoryInfo : ParserError: ( [], ParseException
+ FullyQualifiedErrorId : MissingEndParenthesisAfterStatement

Wenn ich die fehlende Klammer einsetze If ($_.PrimaryIP -ne '')}{ habe ich folgende Ausgabe:

At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:14 char:28

If ($_.PrimaryIP -ne '')}{

~

Missing statement block after If ( condition ).
At C:\Users\Administrator.BOKU-IT-DEV\Desktop\bfinster.ps1:19 char:1

}

~

Unexpected token '}' in expression or statement.
+ CategoryInfo : ParserError: ( [], ParseException
+ FullyQualifiedErrorId : MissingStatementBlock

LG, Bernhard
Bitte warten ..
Mitglied: 145033
12.08.2020, aktualisiert um 09:16 Uhr
Sorry Tippfehler, hatte ne geschweifte statt normale Klammer getippt, ist oben behoben.
Bitte warten ..
Mitglied: kaspersky
12.08.2020 um 09:29 Uhr
Hi,
super jetzt klappt es prima, vielen Dank. Muss mir die Syntax der PS genauer anschauen. War mein erster Versuch.
LG, bernhard
Bitte warten ..
Mitglied: kaspersky
12.08.2020, aktualisiert um 10:25 Uhr
Hallo Kleiber, eine Frage habe ich noch,

ich habe herausgefunden dass einige Maschinen VMs sind und eine private Adressirung aufweisen.
BARATESTVM2 192.168.171.128
JOSKRAVM2 192.168.171.129
BARAMUNDIVMPROD 192.168.171.130
PC3 10.0.2.15
ALEXANDER-VM 10.0.2.15
Diese werden in der Ausgabe ohne IP Adresse wie folgt dargestellt:
set DNS entry BARAMUNDIVMPROD

Kann ich Hosts mit privaten Adressen durch einen Zusatz in der If Schleife ausklammern, bzw auch mit "no IP" versehen, oder ist dafür eine 2te If schleife notwendig? Man könnte auch die IF Schleife dahingehend ändern, dass set DNS entry nur wenn die Primary IP 141.244 enthält, alle anderen erhalten den Zusatz no IP und werden aus der DNS Zone gelöscht, falls vorhanden. Alle Hosts der Universität sind im Subnet 141.244.0.0/16
Vielen Dank.
GlG, Bernhard
Bitte warten ..
Mitglied: 145033
LÖSUNG 12.08.2020 um 10:25 Uhr
Bitte warten ..
Mitglied: kaspersky
12.08.2020 um 11:52 Uhr
Vielen Dank,
funktioniert perfekt.
LG, Bernhard
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Remote Powershell ausführen wie lokale Powershell

gelöst Frage von IngenieursBatch & Shell2 Kommentare

Hallo vielleicht ist der Titel nicht ganz deutlich formuliert. Ich möchte wissen ob es eine Möglichkeit gibt Remote Powershell ...

Batch & Shell

Powershell, PDF

Frage von AnkhMorporkBatch & Shell6 Kommentare

Hallo zusammen, ich komme mit der Suche nicht weiter Situation: ca. 2000 PDF-Dateien (Downloads von E-Mails). In der ersten ...

Batch & Shell

Powershell PSDrive

gelöst Frage von H41mSh1C0RBatch & Shell3 Kommentare

Guten Morgen in die Runde, kann es sein das PSDrive nur im Userkontext funktioniert? Führe ich den Schnipsel im ...

Batch & Shell

Powershell - Frage

gelöst Frage von HenereBatch & Shell10 Kommentare

Servus zusammen ich hab hier ne .ps1 Datei. Inhalt (gekürzt) Öffne ich übers Startmenu des 2016er Server die Powershell ...

Batch & Shell

Powershell Pipelinevariable?

Frage von AlbertMinrichBatch & Shell4 Kommentare

Hallo, eine kleine Powershellfrage. Ich möchte für einige Server alle runtimebroker Prozesse auslesen und sie nach Usernamen gruppieren und ...

Batch & Shell

Powershell Module

gelöst Frage von LeeX01Batch & Shell4 Kommentare

Moin, mir ist aufgefallen das manche Module standardmäßig von der Powershell geladen werden und andere nicht. In der $Profile ...

Heiß diskutierte Inhalte
Notebook & Zubehör
Macbook oder Surface Book 3?
gelöst Frage von FamousDex089Notebook & Zubehör36 Kommentare

Hallo Zusammen :-), ich bin komplett neu in der IT Admin schiene und neu in diesem Forum. Ich habe ...

Switche und Hubs
Kaufberatung (10G) Switche für Unternehmensnetzwerk
Frage von ipzipzapSwitche und Hubs27 Kommentare

Moin, unsere Firma zieht um und am neu renovierten Standort muss/soll alles neu. Auf drei Etagen stehen Racks, in ...

Humor (lol)
So eine Art Jobangebot
Frage von Melvin.van.HorneHumor (lol)21 Kommentare

Moin, ich habe eben eine Zeit damit zugebracht eine GPO für eine Gruppe von Clients zu erstellen. Egal was ...

Windows Server
AD (virtualisiert) und alle angeschlossenen Clients fahren ungeplant herunter
Frage von tobitobsnWindows Server19 Kommentare

Ich habe aktuell ein Problem, dass ein frisch aufgesetzer Hyper-V mit einem virtualisierten AD regelmäßig 1x die Woche herunterfährt ...

Drucker und Scanner
Vorlage Endlospapier Nadeldrucker
Frage von Hanspeter82Drucker und Scanner13 Kommentare

Hallo, hab die Aufagbe bekommen, eine Vorlage zuerstellen bzgl. Druck auf Endlos Papier über einen Nadeldrucker. Habe allerdings kein ...

Windows 10
FritzBox 7590 VPN
Frage von christian295Windows 1013 Kommentare

Hallo Zusammen, wir haben seit einigen Tagen eine neue FritzBox 7590 und wollen mit ShrewSoft 2.2.2 auf Win 10 ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT