DHCP Bereich mit Powershell Auslesen, aber wie?

Dusti

Lt. Junior Grade
Registriert
Aug. 2008
Beiträge
311
Tach zusammen,

Ich hoffe einfach mal das ich hier richtig bin. =)

Ich bin auf der suche nach einem Powershell Script mit dem ich den DHCP Bereich auslesen kann. Es soll den Bereich (z.B. 192.168.1.100 - 192.168.1.199), Aktive Adressen, Lease dauer und Namen und so auflisten.

Folgendes hab ich bereits gefunden, aber das geht nicht.

Code:
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objNetwork = objVS.FindVirtualNetwork("Internal Network")
Set objDHCPServer = objNetwork.DHCPVirtualNetworkServer
Wscript.Echo "Default gateway address: " & objDHCPServer.DefaultGatewayAddress
Wscript.Echo "DNS servers: " & objDHCPServer.DNSServers
Wscript.Echo "Ending IP address: " & objDHCPServer.EndingIPAddress
Wscript.Echo "Is enabled: " & objDHCPServer.IsEnabled
Wscript.Echo "Lease rebinding time: " & objDHCPServer.LeaseRebindingTime
Wscript.Echo "Lease renewal time: " & objDHCPServer.LeaseRenewalTime
Wscript.Echo "Lease time: " & objDHCPServer.LeaseTime
Wscript.Echo "Network: " & objDHCPServer.Network
Wscript.Echo "Network mask: " & objDHCPServer.NetworkMask
Wscript.Echo "Server IP address: " & objDHCPServer.ServerIPAddress
Wscript.Echo "Starting IP address: " & objDHCPServer.StartingIPAddress
Wscript.Echo "WINS Server: " & objDHCPServer.WINSServers

#Pause befehl
Write-Host "Press any key to continue ..."

$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Write-Host
Write-Host "A"
Write-Host "B"
Write-Host "C"

Ich bekomme immer die Fehlermeldung
Das kaufmännische Und-Zeichen ist nicht zulässig. Der &-Operator ist der zukünftigen Verwendung vorbehalten. Verwenden Sie "&", um ein kaufmännisches Und-Zeich
en als Zeichenfolge zu übergeben.
Bei D:\Images\DHCP-Bereich auslesen.ps1:5 Zeichen:43
+ Wscript.Echo "Default gateway address: " & <<<< objDHCPServer.DefaultGatewayAddress
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : AmpersandNotAllowed

Wo liegt der Fehler? Ich meine ich sehe schon das da was mit dem "&" Zeichen nicht stimmt, aber wie kann ich da denn was anderes nutzen?
Ich werde aus der Fehlermeldung nicht ganz schlau.

Gruß
Dusti
 
Ersetze mal die & jeweils durch ein +. Sieht aber auch dann aus als ob das nicht funktionieren würde.
 
Zuletzt bearbeitet:
Dann kommt diese Fehlermeldung

Die Benennung "On" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibw
eise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:1 Zeichen:3
+ On <<<< Error Resume Next
+ CategoryInfo : ObjectNotFound: (On:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Set-Variable : Es wurde kein Positionsparameter gefunden, der das Argument "CreateObject" akzeptiert.
Bei D:\Images\DHCP-Bereich auslesen.ps1:2 Zeichen:4
+ Set <<<< objVS = CreateObject("VirtualServer.Application")
+ CategoryInfo : InvalidArgument: (:) [Set-Variable], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetVariableCommand

Set-Variable : Es wurde kein Positionsparameter gefunden, der das Argument "objVS.FindVirtualNetwork" akzeptiert.
Bei D:\Images\DHCP-Bereich auslesen.ps1:3 Zeichen:4
+ Set <<<< objNetwork = objVS.FindVirtualNetwork("Internal Network")
+ CategoryInfo : InvalidArgument: (:) [Set-Variable], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetVariableCommand

Set-Variable : Es wurde kein Positionsparameter gefunden, der das Argument "objNetwork.DHCPVirtualNetworkServer" akzeptiert.
Bei D:\Images\DHCP-Bereich auslesen.ps1:4 Zeichen:4
+ Set <<<< objDHCPServer = objNetwork.DHCPVirtualNetworkServer
+ CategoryInfo : InvalidArgument: (:) [Set-Variable], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetVariableCommand

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:5 Zeichen:13
+ Wscript.Echo <<<< "Default gateway address: " + objDHCPServer.DefaultGatewayAddress
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:6 Zeichen:13
+ Wscript.Echo <<<< "DNS servers: " + objDHCPServer.DNSServers
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:7 Zeichen:13
+ Wscript.Echo <<<< "Ending IP address: " + objDHCPServer.EndingIPAddress
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:8 Zeichen:13
+ Wscript.Echo <<<< "Is enabled: " + objDHCPServer.IsEnabled
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:9 Zeichen:13
+ Wscript.Echo <<<< "Lease rebinding time: " + objDHCPServer.LeaseRebindingTime
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:10 Zeichen:13
+ Wscript.Echo <<<< "Lease renewal time: " + objDHCPServer.LeaseRenewalTime
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:11 Zeichen:13
+ Wscript.Echo <<<< "Lease time: " + objDHCPServer.LeaseTime
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:12 Zeichen:13
+ Wscript.Echo <<<< "Network: " + objDHCPServer.Network
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:13 Zeichen:13
+ Wscript.Echo <<<< "Network mask: " + objDHCPServer.NetworkMask
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:14 Zeichen:13
+ Wscript.Echo <<<< "Server IP address: " + objDHCPServer.ServerIPAddress
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:15 Zeichen:13
+ Wscript.Echo <<<< "Starting IP address: " + objDHCPServer.StartingIPAddress
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Die Benennung "Wscript.Echo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie di
e Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei D:\Images\DHCP-Bereich auslesen.ps1:16 Zeichen:13
+ Wscript.Echo <<<< "WINS Server: " + objDHCPServer.WINSServers
+ CategoryInfo : ObjectNotFound: (Wscript.Echo:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Press any key to continue ...
Ausnahme beim Aufrufen von "ReadKey" mit 1 Argument(en): "Die Methode oder der Vorgang sind nicht implementiert."
Bei D:\Images\DHCP-Bereich auslesen.ps1:21 Zeichen:28
+ $x = $host.UI.RawUI.ReadKey <<<< ("NoEcho,IncludeKeyDown")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException


A
B
C
 
Wo hast Du das den her? Der erste Teil ist VBScript und kein PowerShell, deshalb auch die Fehlermeldung. Der PowerShell Teil gibt überhaupt keinen Sinn.

Write-Host "A"
Write-Host "B"
Write-Host "C"

Gibt einfach nur A, B, C aus.
 
Zuletzt bearbeitet:
Ich hab das von dieser Seite
Achso okay, ich hab auch noch nicht ganz so den durchblick was Powershell angeht, daher konnte ich nicht sehen was das für nen Script ist.

Das hab ich in anderen Scripten um eine Pause einzufügen. also das er das Fenster nicht direkt schließt und ohne das Funktioniert das iwie nicht.
z.B. hier

Code:
#Abfrage vom Datum und Zeit
Get-Date

#Pause befehl
Write-Host "Press any key to continue ..."

$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Write-Host
Write-Host "A"
Write-Host "B"
Write-Host "C"

hast du da evtl. ne bessere Lösung?

EDIT:
Okay habs noch mal getestet, Funktioniert doch ohne. Kp was da damals schief gegangen ist, da ging es irgendwie nicht.
 
Zuletzt bearbeitet: (änderung)
Könntest Du mal dein Ergebnis posten? Hast mich da auf eine Idee gebracht. Wäre freundlich.

Grüße und Danke

Daniel
 
Das der Pausebefehl vor dem Rest steht macht überhaupt keinen Sinn.
 
@DerGast
Da gibts kein Ergebnis, außer "A", "B", "C", zumindest nicht in der PowerShell.

Ausgabe in Textdatei:
[string]$dhcp = netsh dhcp show server
[array]$servers = $dhcp.Split("[] ") | Select-String -Pattern $env:userdnsdomain | Select-String -Pattern cn= -notmatch
foreach ( $server in $servers ) {
[array]$all = netsh dhcp server \\$server show all
[array]$scopes = netsh dhcp server \\$server show scope
[array]$scopeoption = netsh dhcp server \\$server show optionvalue
#output
$all | Out-File -width 120 -FilePath "C:\temp\$server-dhcp-info.txt"
$scopes | Out-File -width 120 -Append -NoClobber -FilePath "C:\$server-dhcp-info.txt"
$scopeoption | Out-File -width 120 -Append -NoClobber -FilePath "C:\$server-dhcp-info.txt"
}
 
Ja das mit dem ABC könnt ihr euch sparen, hatte es aus einem anderen Script kopiert und da ging es irgendwie nicht ohne, aber nun doch. also es hat nichts zu bedeuten!
 
Zurück
Oben