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 ForEach Schleife für Drucker funktioniert nicht

Mitglied: mguenth83

mguenth83 (Level 1) - Jetzt verbinden

25.09.2013, aktualisiert 16:44 Uhr, 1840 Aufrufe, 8 Kommentare

Hi,
ich wollte bei einer Migration die Druckernamen auslesen lassen, diese dann speichern und auf den neuen System wieder verbinden.

Habt Ihr eine Ahnung warum meine ForEachschleife nicht funktioniert ?
Versuche auf der Inhalt der in der Variable drauf zu zugreifen damit er alle vier Drucker anlegt.

01.
$Drucker = Get-WmiObject -Class Win32_Printer | Select-Object -Property ShareName, SystemName | Where-Object -Like -Property SystemName -Value \\CONTOSO-PRINT1 |Select-Object -Property ShareName 
02.
$WindowsVersion = [System.Environment]::OSVersion.Version 
03.
if ($WindowsVersion.Build -ge 7601) { 
04.
$Drucker | ForEach-Object { 
05.
(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("$_.ShareName") 
06.
}}
Das hier steht in der Variablen...
01.
ShareName                                                                                                                    
02.
---------                                                                                                                    
03.
HPLJ_PRO_400M400                                                                                                          
04.
KONICAMINOLTA_1                                                                                                        
05.
KYOCERA_TASKALFA_01                                                                                                    
06.
KYOCERA_TASKALFA_02
Mitglied: colinardo
25.09.2013, aktualisiert um 23:23 Uhr
Hallo Matthias,
Versuchs mal in Zeile 5 hiermit (ungetestet)
01.
(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\CONTOSO-PRINT1\$($_.ShareName)") 
Grüße Uwe
Bitte warten ..
Mitglied: mguenth83
26.09.2013 um 07:44 Uhr
Hi Uwe,
danke für die Bemühungen aber leider hat es nicht funktioniert...schade eigentlich...

Gruß
Matze
Bitte warten ..
Mitglied: colinardo
26.09.2013 um 08:10 Uhr
Wenn du das Script auf dem gleichen Rechner ausführst wo die Verbindungen noch existieren kann das erneute Hinzufügen ja nicht klappen. Speichere die Daten pro Client z.B. in einer Textdatei wie in diesem Beispiel: http://social.technet.microsoft.com/Forums/windowsserver/de-DE/1da4e996 ...

Grüße Uwe
Bitte warten ..
Mitglied: mguenth83
26.09.2013 um 08:32 Uhr
Hey Uwe,
öhm ja deswegen habe ich Zeile Eins auskommentiert und nur eine Textdatei als Input genommen. Somit kann ich noch nicht vorhandene Drucker per Hand in die TXT schreiben die dann eigentlich hätte funktionieren sollen.

Gruß
Matze
Bitte warten ..
Mitglied: colinardo
26.09.2013, aktualisiert um 09:07 Uhr
öhm ja deswegen habe ich Zeile Eins auskommentiert
Stand leider nirgendwo in deinem Thread bzw. Script.
Hiermit hatte ich bei einem Test keine Probleme:
01.
$Drucker = ....... 
02.
$objPrint = [wmiclass] "Win32_Printer" 
03.
$Drucker | %{$objPrint.AddPrinterConnection("\\CONTOSO-PRINT1\$($_.ShareName)")}
Wäre auch nett wenn du zumindest mal die Ausgabe deines Scriptes posten würdest dann hätten wir mehr Ansätze

noch was, das auslesen deiner Drucker mit deiner ersten Zeile ginge auch einfacher:
01.
$Drucker = Get-WmiObject -Class Win32_Printer |?{$_.SystemName -eq "\\CONTOSO-PRINT1" -and $_.ShareName -ne $null} | select -ExpandProperty ShareName
Grüße Uwe
Bitte warten ..
Mitglied: mguenth83
26.09.2013 um 09:18 Uhr
Irgendwie bin ich glaub ich zu blöd für Powershell. Deine Variante von der Ersten Zeile gibt überhaupt nichts aus.

Das andere funktioniert auch nicht wirklich...

01.
Get-WmiObject -Class Win32_Printer|Select-Object -Property ShareName, SystemName|Where-Object -Like -Property SystemName -Value \\CONTOSO-PRINT1|Select-Object -Property ShareName|Format-Table ShareName -HideTableHeaders|Out-File C:\Temp\Printer.txt 
02.
Get-Content "C:\Temp\printer.txt" 
03.
$WindowsVersion = [System.Environment]::OSVersion.Version 
04.
if ($WindowsVersion.Build -ge 7601) { 
05.
    $File2=Get-Content "C:\Temp\printer.txt" 
06.
    $File2.Replace(" ",$null) | Out-File "C:\Temp\printer.txt" 
07.
    $Printer = Get-Content "C:\Temp\printer.txt" 
08.
 
09.
$objPrint = [wmiclass] "Win32_Printer"  
10.
$Printer | ForEach-Object { 
11.
$Printer | %{$objPrint.AddPrinterConnection("\\CONTOSO-PRINT1\$($_.ShareName)")} 
12.
}}
Bringt nur wirre Zeichen als ausgabe....
01.
KONICAMINOLTA_11                                                                                                        
02.
 
03.
 
04.
 
05.
 
06.
__GENUS          : 2 
07.
__CLASS          : __PARAMETERS 
08.
__SUPERCLASS     :  
09.
__DYNASTY        : __PARAMETERS 
10.
__RELPATH        :  
11.
__PROPERTY_COUNT : 1 
12.
__DERIVATION     : {} 
13.
__SERVER         :  
14.
__NAMESPACE      :  
15.
__PATH           :  
16.
ReturnValue      : 1801 
17.
PSComputerName   :  
18.
 
19.
__GENUS          : 2 
20.
__CLASS          : __PARAMETERS 
21.
__SUPERCLASS     :  
22.
__DYNASTY        : __PARAMETERS 
23.
__RELPATH        :  
24.
__PROPERTY_COUNT : 1 
25.
__DERIVATION     : {} 
26.
__SERVER         :  
27.
__NAMESPACE      :  
28.
__PATH           :  
29.
ReturnValue      : 1801 
30.
PSComputerName   : 
Bitte warten ..
Mitglied: colinardo
26.09.2013, aktualisiert um 09:33 Uhr
Das kann so auch nicht gehen .... dein Script ist voller Fehler
machs so ...
01.
Get-WmiObject -Class Win32_Printer |?{$_.SystemName -eq "\\CONTOSO-PRINT1" -and $_.ShareName -ne $null} | select -ExpandProperty ShareName | Out-File C:\Temp\Printer.txt 
02.
$Drucker = Get-Content "C:\Temp\printer.txt" 
03.
$WindowsVersion = [System.Environment]::OSVersion.Version 
04.
if ($WindowsVersion.Build -ge 7601) { 
05.
  $objPrint = [wmiclass] "Win32_Printer"  
06.
  foreach ($d in $Drucker){ 
07.
    $objPrint.AddPrinterConnection("\\CONTOSO-PRINT1\$d")} 
08.
09.
}
Und die Ausgabe ist nicht wirres Zeug sondern sagt zum Beispiel aus das der Fehler 1801 aufgetreten ist und das bedeutet: Invalid Printer Name (http://msdn.microsoft.com/en-us/library/aa384769%28v=vs.85%29.aspx)
Wenn dort ReturnValue = 0 ist wurde die Verbindung erfolgreich hinzugefügt.
Bitte warten ..
Mitglied: mguenth83
26.09.2013 um 12:00 Uhr
Funktioniert perfekt....vielleicht sollte ich mal nen Powershellkurs machen...jedenfalls wieder was dazu gelernt.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell: if Abfrage in foreach Schleife

gelöst Frage von LuceDeCielloBatch & Shell5 Kommentare

Hallo, ich würde mich sehr freuen wenn ihr mir etwas auf die Sprünge helfen könntet. Ich habe hier folgendes ...

Batch & Shell

Powershell ForEach in ForEach

gelöst Frage von BuggerBatch & Shell4 Kommentare

Hallo, ich habe folgenden Code: Leider funktioniert das Script nur, wenn nur ein User in TestGruppe ist. Sobald mehrere ...

Batch & Shell

Powershell: Foreach-Schleife, feststellen ob aktuelles Element das letzte in der Schleife ist

gelöst Frage von MartinADBatch & Shell2 Kommentare

Hallo, ich habe eine Foreach-Schleife in Powershell. Ich möchte in der ForEach-Schleife feststellen, ob das aktuelle Element das letzte ...

Batch & Shell

Powershell If-Schleife funktioniert nicht

gelöst Frage von windelterroristBatch & Shell5 Kommentare

Hallo Admins Arbeite gerade an einem kleinen Script funktioniert aber nicht so, wie ich mir das vorstelle Mein Code: ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 1 TagAusbildung9 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 3 TagenSpeicherkarten3 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 3 TagenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 3 TagenHardware3 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Vmware
Offene LDAP-Server in AS
gelöst Frage von obi-wan-kenobiVmware18 Kommentare

Hallo alle Miteinander, ich habe ein Problem, unsere VM-Ware Appliance (Version. 6.5.0.10000) ist scheinbar angreifbar. Wir haben eben die ...

SAN, NAS, DAS
Nas mit USB und LAN gleichzeitig zugreifen
gelöst Frage von MarkBeakerSAN, NAS, DAS16 Kommentare

Hallo zusammen, ich suche eine Art NAS, womit ich via LAN und USB zugreifen kann. Folgender Aufbau ist gedacht: ...

Suche Projektpartner
Debian 9.5 32 Bit und PHP 7 Fehlerbeseitigungen
Frage von zeroblue2005Suche Projektpartner11 Kommentare

Hallo Zusammen, ich habe eine VM auf Basis von ESXI am laufen. Dieser wurde unter Debian 7 installiert mt ...

Windows Server
Zertifikat RemoteDesktop hinterlegen
Frage von Green14Windows Server10 Kommentare

Hallo zusammen. ich habe mehrere Server (WinSrv 2016). Die Server sind in keiner Domäne und keine Terminalserver. Ich verbinde ...