none
Problem mit *.Put() RRS feed

  • Frage

  • Hallo mein Name ist Christian,
    und ich bin neu hier und habe ein Problem beim erstellen eines Druckers mit dem unten geposteten Powershell Script.
    Ich möchte  gerne einen Drucker erstellen und habe dazu eine kleine Funktion.
    Beim ausführen/erstellen des Druckers erhalte ich folgende Fehlermeldung.

    Ausnahme beim Aufrufen von "Put" mit 0 Argument(en): "Allgemeiner Fehler "
    Bei P:\@Printerinstall\@IP-Printerinstall-W7-2ter-Versuch.ps1:109 Zeichen:11
    + $print.Put <<<< () + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

     

     

    Das erstellen des Ports in der gleichen Art und Weise (aus meiner sicht) erzeugt komischerweise keine Fehlermeldung.
    Vielleicht hat ja einer eine Idee warum  hier immer die angehängte Meldung erscheint.
    Habe mir schon einen Wolf gesucht aber nix gefunden.

    Liebe Grüße Christian

    Anbei noch das Script:

    cls
    #Inputbox
    [void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
    
    $PrintDriver  = "Canon iR C2380/2550 PCL5c"
    $PrintDriverpPath = "P:\@Treiber\Drucker\IR 105-8500 v8.70 PCL5"
    $PrintDriverpInf = "P:\@Treiber\Drucker\IR 105-8500 v8.70 PCL5\P564GAL.inf"
    
    #Einlesen welches Mufug als lokaler IP-Drucker installiert werden soll
    $Choice = [Microsoft.VisualBasic.Interaction]::InputBox("Wählen Sie das gewünschte Mufug aus! 
    A = ITOD1001
    B = ITOD1002
    C = ITOD1003
    D = ITOD1004
    E = ITOD1005
    F = ITOD1006
    G = ITOD1007
    H = IRID1001
    I = IFED1001
    J = IWGD1001
    K = IWGD1002
    L = ITKD1001
    M = IGID1001
    N = IJTD1001
    O = INOD1001
    P = INOD1002
    Q = ICHD1001
    R = ITMD1001
    
    ", "Mufug-Auswahl!")
    
    
    
    switch ($Choice) 
        { 
            a {$Printer = "ITOD1001"} 
            b {$Printer = "ITOD1002"} 
            c {$Printer = "ITOD1003"} 
            default {"Secureprint"    }
    
    function create-port { 
    Param (  $PortName=$Printer  , $TCPIP = $PortName, $Prot = 1, $PortNum = "9100", $Snmp= $false) 
      
    $newport = ([WMICLASS]"Win32_TcpIpPrinterPort").createInstance() 
      
    $newport.name           = $PortName
    $newport.Protocol       = $Prot
    $newport.HostAddress    = $TCPIP
    $newport.PortNumber     = $PortNum
    $newport.SnmpEnabled    = $Snmp
      
    $newport.Put() 
    } 
      
    function install-driver { 
    Param (  $DrvName  ) 
      
    $driverclass                    = [wmiclass]"Win32_PrinterDriver"
    $driverobj                      = $driverclass.createinstance() 
      
    $driverobj.name                 = $DrvName
    #$driverobj.SupportedPlatform   = "Windows NT x64"
    $driverobj.SupportedPlatform 	= "Windows 7 x64" 
    $driverobj.Version              = "3"
    $driverobj.DriverPath           = $PrintDriverpPath 
    $driverobj.Infname              = $PrintDriverpInf
      
    $newdriver = $driverclass.AddPrinterDriver($driverobj) 
    $newdriver = $driverclass.Put() 
    } 
      
    function Create-Printer { 
    Param ( $deviceID, $drv32 , $PortName, $Shared = $false, $Loc, $Comment ) 
      
    $print              = ([WMICLASS]"Win32_Printer").createInstance()
    $print.GetType()
    $print.drivername   = $drv32
    $print.PortName     = $PortName
    $print.Shared       = $Shared
    #$print.Sharename    = $ShareName
    $print.Location     = $Loc
    $print.Comment      = $Comment
    $print.DeviceID     = $deviceID
    
    $print.Put() 
    } 
     
    create-port -PortName $Printer -TCPIP $Printer
    
    #install-driver  -DrvName $PrintDriver
     
    create-printer -deviceID $Printer + " über IP" -drv32 $PrintDriver -PortName $Printer 
    
    
    
    


    

    

    

     

    Freitag, 23. September 2011 09:17

Antworten

Alle Antworten

  • Da gibt es ein paar Möglichkeiten. Schau dir doch mal diesen Thread an.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".
    Sonntag, 25. September 2011 19:34
    Moderator
  • Hallo Christian,

     

    Hat die Antwort von Denniver deine Situation abgeklärt?Können wir den Thread schließen?

     

    Viele Grüße,

    Alex

    Mittwoch, 28. September 2011 14:27
  • Hallo,

    ich möchte mich zuerst für die späte Antwort entschuldigen, ich wollte das Problem während einer Umstellung lösen, was aber dann aufgrund von Zeitproblemen nicht mehr möglich war.

    Ich habe einige dieser Lösungsansätze nun nach der Umstellung ausprobiert, und von diesen hat leider keiner geholfen.

    Aber das Problem ist trotzdem gelöst. Die Lösung lautet wie folgt.

    Auf all unseren Clients ist aus Sicherheitsgründen der Serverdienst deaktiviert. Somit kann Put keine Freigabe anlegen. Das hätte sie eigentlich auch nicht tun sollen da -->

    Param ( $deviceID, $drv32 , $PortName, $Shared = $false, $Loc, $Comment )
      
    $print              = ([WMICLASS]"Win32_Printer").createInstance()
    $print.GetType()
    $print.drivername   = $drv32
    $print.PortName     = $PortName
    $print.Shared       = $Shared

    $shared auf $false steht allerdings hat sich dann Im Debug Modus ergeben, dass aus welchem Grund auch immer $print.Shared mit true hinterlegt war. Somit hat Put versucht einen Share anzulegen, obwohl der Serverdienst nicht gelaufen ist und das verursacht den Allgemeinen Fehler ;-)) nun steht im Script  folgendes

    $print.Shared       = $false

    Trotzdem Danke für die Hilfe, und ja der Thread kann geschlossen werden.

    Liebe Grüße

    Christian

    Mittwoch, 19. Oktober 2011 13:36