none
Wie kann ich den Datentyp IPAddress[] definieren RRS feed

  • Frage

  • Guten Tag,

    ich sitze gerade an einem kleinen grafischen Programm was IP-Adressen im DHCP registrieren soll.
    Folgendes Problem ist mir da entstanden.

    Ich möchte überprüfen, ob der Scope für die IP-Adresse die ich angebe auch existiert. Folgende Zeile habe ich da geschrieben:

    $Scope_Check = Invoke-Command -ComputerName $Server -ScriptBlock {Get-DhcpServerv4Scope -ScopeId $Scope} -ErrorAction 'Stop'

    So sieht meine Definition von $Scope aus:

    $Scope = "$IP1.$IP2.0.0"
    Ich habe festgestellt, dass die "-ScopeId" beim Befehl "Get-DhcpServerv4Scope" den Datentyp "<IPAddress[]>" ist. Sobald ich den String von $Scope übergebe, wird mir gesagt, dass ein String nicht in ein [System.Net.IPAddress] umgewandelt werden kann. Kann mir einer sagen wie ich $Scope definieren muss, damit bei "-ScopeId" auch der String von $Scope benutzt wird?

    Danke im Voraus,
    Robert

    Donnerstag, 9. April 2015 06:14

Antworten

  • PS > $cn = 'ads-001-010.contoso.local'
    
    PS > $ScopeID = [IPAddress]'192.168.137.0'
    
    PS > Invoke-Command -ComputerName $cn -ScriptBlock {Param($ScopeId) Get-DhcpServerv4Scope -ScopeId $ScopeID} -ArgumentList $ScopeID
    
    PSComputerName   : ads-001-010.contoso.local
    RunspaceId       : 38b90ef3-6385-4b76-9bfb-07ce9cbb14ac
    ActivatePolicies : True
    Delay            : 0
    Description      : 
    EndRange         : 192.168.137.254
    LeaseDuration    : 8.00:00:00
    MaxBootpClients  : 4294967295
    Name             : Contoso HQ
    NapEnable        : False
    NapProfile       : 
    ScopeId          : 192.168.137.0
    StartRange       : 192.168.137.200
    State            : Active
    SubnetMask       : 255.255.255.0
    SuperscopeName   : 
    Type             : Dhcp

    Siehe auch:
    about_Remote_Variables
    http://blogs.msdn.com/b/powershell/archive/2009/12/29/arguments-for-remote-commands.aspx

    Gruß
    Joachim



    • Bearbeitet Joachim Meyer Donnerstag, 9. April 2015 19:34
    • Als Antwort markiert h725rk Freitag, 10. April 2015 05:34
    Donnerstag, 9. April 2015 19:08

Alle Antworten

  • Hallo Robert!

    Grundsätzlich vorgehensweise ist so: Du gehst du zu Google (nicht zu Bing der findet das nicht) und gibst die suchwörter .NET Klasse oder Class ein und den Typnamen den du suchst.

    Also hier  so: .Net Klasse IPAddress

    http://lmgtfy.com/?q=.net+class+IPAddress

    Meistens führen dich die ersten Treffer immer in das Microsoft Developer Network (MSDN) zu der Klassen Beschreibung.

    Dort siehst du die volle Bezeichnung der Klasse mit Namespace + Name: System.Net.IPAddress

    Den vollen Namen schreibst du in eckige Klammern:

    [System.Net.IPAddress]"127.0.0.1"


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Donnerstag, 9. April 2015 10:59
  • Erst einmal, danke für die Antwort.

    zweitens: Ich hätte wohl dazu schreiben sollen, dass ich diese "Lösung" gefunden hatte, aber das diese nicht bei mir funktioniert hat.

    Vielleicht gibt es noch eine weitere Lösung. Zur Übersicht habe ich einfach mal meinen Codeschnippsel reinkopiert:

    $buttonHinzufügen_Click={
    	
    	$Standort = $comStandort.Text
    	
    	$Server = $txtServer.Text
    	
    	$Rechnername = $txtRechnername.Text
    	
    	$IP1 = $txtIP1.Text
    	$IP2 = $txtIP2.Text
    	$IP3 = $txtIP3.Text
    	$IP4 = $txtIP4.Text
    	$IPAll = "$IP1.$IP2.$IP3.$IP4"
    	
    	$Subnetmask1 = $txtSubnet1.Text
    	$Subnetmask2 = $txtSubnet2.Text
    	$Subnetmask3 = $txtSubnet3.Text
    	$Subnetmask4 = $txtSubnet4.Text
    	$SubnetAll = "$Subnetmask1.$Subnetmask2.$Subnetmask3.$Subnetmask4"
    	
    	$MAC1 = $txtMAC1.Text
    	$MAC2 = $txtMAC2.Text
    	$MAC3 = $txtMAC3.Text
    	$MAC4 = $txtMAC4.Text
    	$MAC5 = $txtMAC5.Text
    	$MAC6 = $txtMAC6.Text
    	$MACAll = "$MAC1-$MAC2-$MAC3-$MAC4-$MAC5-$MAC6"
    	
    		
    	#$Scope = [System.Net.IPAddress]::Parse($IP1.$IP2.0.0)
    	[IPAddress]$Scope = "$IP1.$IP2.0.0"
    	[System.Windows.Forms.MessageBox]::Show("Scope: $Scope","Erfolgreich",0,[System.Windows.Forms.MessageBoxIcon]::Information)
    	$Description = "$Rechnername"
    	
    	#[System.Windows.Forms.MessageBox]::Show("Standort ist $Standort; Server ist $Server; Rechnername ist $Rechnername; MAC ist $MACAll; IP ist $IPAll; Subnet ist $SubnetAll")
    	
    		if($Rechnername -ne ""){
    			if($MAC1 -ne "" -and $MAC2 -ne "" -and $MAC3 -ne "" -and $MAC4 -ne "" -and $MAC5 -ne "" -and $MAC6 -ne "" ){
    				if($IP1 -ne "" -and $IP2 -ne "" -and $IP3 -ne "" -and $IP4 -ne ""){
    			
    					#[System.Windows.Forms.MessageBox]::Show("$Scope","Erfolgreich",0,[System.Windows.Forms.MessageBoxIcon]::Information)
    					
    					### TODO: $Scope in IPAdress umwandeln!!!!
    				
    					$Scope_Check = Invoke-Command -ComputerName $Server -ScriptBlock {Get-DhcpServerv4Scope -ScopeId $Scope} -ErrorAction 'Stop'
    					#[System.Windows.Forms.MessageBox]::Show("Scope_Check: $Scope_Check - Scope: $Scope","Erfolgreich",0,[System.Windows.Forms.MessageBoxIcon]::Information)
    					if($Scope_Check.ScopeId -ne $null){
    						
    						$IP_Check = Invoke-Command -ComputerName $Server -ScriptBlock {Get-DhcpServerv4Reservation -IPAddress $IPAll} -ErrorAction 'SilentlyContinue'
    						if($IP_Check -eq $null){
    							
    							if($chkAllow.Checked -eq $true){
    								Invoke-Command -ComputerName $Server -ScriptBlock {Add-DhcpServerv4Reservation -ScopeId $Scope -IPAddress $IPAll -ClientId $MACAll -ComputerName $Server -Description $Description} -ErrorAction 'SilentlyContinue'
    								Invoke-Command -ComputerName $Server -ScriptBlock {Add-DhcpServerv4Filter -List Allow -Macaddress $MACAll -ComputerName $Server -Description $Description} -ErrorAction 'SilentlyContinue'
    								[System.Windows.Forms.MessageBox]::Show("IP $IPAll wurde erfolgreich hinzugefügt und in die Allow-List aufgenommen","Erfolgreich",0,[System.Windows.Forms.MessageBoxIcon]::Information)
    							}
    							else{
    								Invoke-Command -ComputerName $Server -ScriptBlock {Add-DhcpServerv4Reservation -ScopeId $Scope -IPAddress $IPAll -ClientId $MACAll -ComputerName $Server} -ErrorAction 'SilentlyContinue'
    								[System.Windows.Forms.MessageBox]::Show("IP $IPAll wurde erfolgreich hinzugefügt","Erfolgreich",0,[System.Windows.Forms.MessageBoxIcon]::Information)
    							}
    						} # else für IP_Check
    						else{
    							[System.Windows.Forms.MessageBox]::Show("IP-Adresse ist schon reserviert","Fehler",0,[System.Windows.Forms.MessageBoxIcon]::Error)
    						} # else für IP_Check						
    					}
    					else{ # else für Scope_Check
    						[System.Windows.Forms.MessageBox]::Show("Scope existiert nicht. Bitte von einem Admin anlegen lassen","Fehler",0,[System.Windows.Forms.MessageBoxIcon]::Error)
    					} # else für Scope_Check
    				
    				}else{ # else für IP
    					[System.Windows.Forms.MessageBox]::Show("IP-Adresse enthält einen Fehler","Fehler",0,[System.Windows.Forms.MessageBoxIcon]::Error)
    				} # else für IP
    			}else{ # else für MAC
    				[System.Windows.Forms.MessageBox]::Show("MAC enthält einen Fehler","Fehler",0,[System.Windows.Forms.MessageBoxIcon]::Error)
    				} # else für MAC
    		}else{ #else für Rechnername
    			[System.Windows.Forms.MessageBox]::Show("Rechnername enthält einen Fehler","Fehler",0,[System.Windows.Forms.MessageBoxIcon]::Error)
    		} #else für Rechnername
    	
    
    }

    Ich habe noch einen Fehler bekommen. Laut diesem Fehler wird zu "-ScopeId" kein Wert übergeben, also ist $Scope leer. Ich lasse aber davor und danach $Scope ausgeben und es wird mir immer der richtige Scope angegeben. Hier noch der Fehler dazu:

    See the end of this message for details on invoking 
    just-in-time (JIT) debugging instead of this dialog box.
    
    ************** Exception Text **************
    System.Management.Automation.ActionPreferenceStopException: The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Cannot validate argument on parameter 'ScopeId'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
       at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
       at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
       at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
       at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
       at System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame)
       at System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0)
       at System.Management.Automation.ScriptBlock.InvokeWithPipeImpl(ScriptBlockClauseToInvoke clauseToInvoke, Boolean createLocalScope, Dictionary`2 functionsToDefine, List`1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Object[] args)
       at System.Management.Automation.ScriptBlock.<>c__DisplayClassa.<InvokeWithPipe>b__8()
       at System.Management.Automation.Runspaces.RunspaceBase.RunActionIfNoRunningPipelinesWithThreadCheck(Action action)
       at System.Management.Automation.ScriptBlock.InvokeWithPipe(Boolean useLocalScope, Dictionary`2 functionsToDefine, List`1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Object[] args)
       at System.Management.Automation.ScriptBlock.InvokeAsDelegateHelper(Object dollarUnder, Object dollarThis, Object[] args)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    
    
    ************** Loaded Assemblies **************
    mscorlib
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.34014 built by: FX45W81RTMGDR
        CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
    ----------------------------------------
    PoshExeHostWinV3
        Assembly Version: 3.0.9.0
        Win32 Version: 1.0.0.0
        CodeBase: file:///C:/powershell/DHCP.exe
    ----------------------------------------
    System.Windows.Forms
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System.Drawing
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.34003 built by: FX45W81RTMGDR
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Management.Automation
        Assembly Version: 3.0.0.0
        Win32 Version: 6.3.9600.16394
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Management.Automation/v4.0_3.0.0.0__31bf3856ad364e35/System.Management.Automation.dll
    ----------------------------------------
    System.Core
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
    ----------------------------------------
    Microsoft.PowerShell.Commands.Diagnostics
        Assembly Version: 3.0.0.0
        Win32 Version: 6.3.9600.16384
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.Commands.Diagnostics/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.Commands.Diagnostics.dll
    ----------------------------------------
    System.Configuration.Install
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration.Install/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.Install.dll
    ----------------------------------------
    System.Transactions
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
    ----------------------------------------
    Microsoft.PowerShell.Commands.Utility
        Assembly Version: 3.0.0.0
        Win32 Version: 6.3.9600.16384
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.Commands.Utility/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.Commands.Utility.dll
    ----------------------------------------
    Microsoft.PowerShell.ConsoleHost
        Assembly Version: 3.0.0.0
        Win32 Version: 6.3.9600.16384
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.ConsoleHost/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.ConsoleHost.dll
    ----------------------------------------
    Microsoft.PowerShell.Commands.Management
        Assembly Version: 3.0.0.0
        Win32 Version: 6.3.9600.16384
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.Commands.Management/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.Commands.Management.dll
    ----------------------------------------
    Microsoft.Management.Infrastructure
        Assembly Version: 1.0.0.0
        Win32 Version: 6.3.9600.16384
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.Management.Infrastructure/v4.0_1.0.0.0__31bf3856ad364e35/Microsoft.Management.Infrastructure.dll
    ----------------------------------------
    Microsoft.PowerShell.Security
        Assembly Version: 3.0.0.0
        Win32 Version: 6.3.9600.16384
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.Security/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.Security.dll
    ----------------------------------------
    Microsoft.WSMan.Management
        Assembly Version: 3.0.0.0
        Win32 Version: 6.3.9600.16384
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.WSMan.Management/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.WSMan.Management.dll
    ----------------------------------------
    Anonymously Hosted DynamicMethods Assembly
        Assembly Version: 0.0.0.0
        Win32 Version: 4.0.30319.34014 built by: FX45W81RTMGDR
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/mscorlib/v4.0_4.0.0.0__b77a5c561934e089/mscorlib.dll
    ----------------------------------------
    System.Xml
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.DirectoryServices
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.DirectoryServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.DirectoryServices.dll
    ----------------------------------------
    System.Management
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Management/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Management.dll
    ----------------------------------------
    System.Numerics
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
    ----------------------------------------
    System.Configuration
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Data
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
    ----------------------------------------
    Accessibility
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
    ----------------------------------------
    
    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.
    
    For example:
    
    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    
    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.
    
    




    • Bearbeitet h725rk Donnerstag, 9. April 2015 12:17
    Donnerstag, 9. April 2015 11:35
  •  Du gehst du zu Google (nicht zu Bing der findet das nicht) und gibst die suchwörter .NET Klasse oder Class ein und den Typnamen den du suchst.

    Also hier  so: .Net Klasse IPAddress

    Also manchmal erzählst du ein Zeug Peter. Das geht selbstverständlich mit jeder Suchmaschine, auch mit BING , sogar ohne "Klasse" und ".".  :) 

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Donnerstag, 9. April 2015 12:21
    Moderator
  • Also wenn nicht alle Besipiele im Netz falsch sind, musst du die IP nicht in ein Ipadress-Objekt umwandeln, das erfolgt wohl automatisch. Ich kanns leider mangels passender Serverversion mit DHCP nicht testen, aber ich denke das das ein klassischer Fall von irreführender Fehlermeldung ist.

    Gib mal vor Spass eine gültige Ipadresse direkt an hinter "Scopeid" und schau mal ob das geht.

     

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Donnerstag, 9. April 2015 12:24
    Moderator
  • Wenn ich die IP direkt eingebe, dann funktioniert es. Das ist aber nicht Sinn der Sache. Ich habe die Powershellbefehle mal nacheinander in die Powershell eingegeben und muss feststellen, dass Invoke-Command damit ein Problem hat.

    Eingabe:

    > $Scope = [System.Net.IPAddress]"168.0.0.0"
    > $Scope

    Ausgabe:
    Address            : 168
    AddressFamily      : InterNetwork
    ScopeId            :
    IsIPv6Multicast    : False
    IsIPv6LinkLocal    : False
    IsIPv6SiteLocal    : False
    IsIPv6Teredo       : False
    IsIPv4MappedToIPv6 : False
    IPAddressToString  : 168.0.0.0

    Eingabe:

    > $Scope.IPAddressToString

    Ausgabe:
    168.0.0.0

    Eingabe:

    > Invoke-Command -ComputerName "*Server*" -ScriptBlock {Get-DhcpServerv4Scope -ScopeId $Scope}
    Ausgabe:
    Cannot validate argument on parameter 'ScopeId'. The argument is null or empty. Provide an argument that is not null
    or empty, and then try the command again.
        + CategoryInfo          : InvalidData: (:) [Get-DhcpServerv4Scope], ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationError,Get-DhcpServerv4Scope
        + PSComputerName        : "*Server*"

    Eingabe:

    > Invoke-Command -ComputerName "*Server*" -ScriptBlock {Get-DhcpServerv4Scope -ScopeId $Scope.IPAddressToString}
    Ausgabe:
    Cannot validate argument on parameter 'ScopeId'. The argument is null or empty. Provide an argument that is not null
    or empty, and then try the command again.
        + CategoryInfo          : InvalidData: (:) [Get-DhcpServerv4Scope], ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationError,Get-DhcpServerv4Scope
        + PSComputerName        : "*Server*"

    Sobald ich das Command mit einer direkten "IP" eingebe funktioniert es:

    Eingabe:

    > Invoke-Command -ComputerName "*Server*" -ScriptBlock {Get-DhcpServerv4Scope -ScopeId "168.0.0.0"}
    Ausgabe möchte ich nicht zeigen, aber es geht ;)

    Donnerstag, 9. April 2015 13:02
  • Dachte ichs mir doch.
     
     
    >Wenn ich die IP direkt eingebe, dann funktioniert es. Das ist aber nicht Sinn der Sache.

    Du sollst die IP so auch nicht dauerhaft eintragen. Das nennt man Fehlersuche... :)
     

    Warum überhaupt Invoke-command? Das CMDlet hat doch einen eigenen -computername Parameter?

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.



    Donnerstag, 9. April 2015 13:09
    Moderator
  • @Denniver

    Wenn du meinst das meine tagtägliche Erfahrungen komisch sind, dann kann ich da nichts machen.
    Meine Erfahrungen sind halt so, dass Bing MSDN Artikel schlechter findet als Google. Andere Programmier - und PowerShell Kollegen sagen das auch. Da wird sogar drüber gefrozelt.

    Vielleicht liegt es auch an dem Persönlichen Suchprofil, das Google heimlich speichert und benutzt, so das Ich persönlich dort mehr C# Ergebnisse bekomme als bei BING.

    Immer wenn ich Bing ausprobiere, bin ich unzufrieden mit den such Ergebnissen.... ist nun leider so.


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Donnerstag, 9. April 2015 13:13
  • PS > $cn = 'ads-001-010.contoso.local'
    
    PS > $ScopeID = [IPAddress]'192.168.137.0'
    
    PS > Invoke-Command -ComputerName $cn -ScriptBlock {Param($ScopeId) Get-DhcpServerv4Scope -ScopeId $ScopeID} -ArgumentList $ScopeID
    
    PSComputerName   : ads-001-010.contoso.local
    RunspaceId       : 38b90ef3-6385-4b76-9bfb-07ce9cbb14ac
    ActivatePolicies : True
    Delay            : 0
    Description      : 
    EndRange         : 192.168.137.254
    LeaseDuration    : 8.00:00:00
    MaxBootpClients  : 4294967295
    Name             : Contoso HQ
    NapEnable        : False
    NapProfile       : 
    ScopeId          : 192.168.137.0
    StartRange       : 192.168.137.200
    State            : Active
    SubnetMask       : 255.255.255.0
    SuperscopeName   : 
    Type             : Dhcp

    Siehe auch:
    about_Remote_Variables
    http://blogs.msdn.com/b/powershell/archive/2009/12/29/arguments-for-remote-commands.aspx

    Gruß
    Joachim



    • Bearbeitet Joachim Meyer Donnerstag, 9. April 2015 19:34
    • Als Antwort markiert h725rk Freitag, 10. April 2015 05:34
    Donnerstag, 9. April 2015 19:08
  • Invoke-Command muss ich benutzen, da auf einem Client keine DHCP-Befehle ausgeführt werden können. Es fehlt die DHCP-Server-Bibliothek für Powershell. Die wird nur auf dem Server installiert.

    /Edit:
    Das ist es. ich wusste nicht, dass ich die Variabeln nochmals im Invoke-Command definieren muss.
    Danke dir Joachim.

    • Bearbeitet h725rk Freitag, 10. April 2015 05:24
    Freitag, 10. April 2015 05:11