Hallo,
möchte in einem Hashfeld alle bestehenden Druckerports (Anschlüsse) eines im Netzwerk befindlichen Rechners einlesen. Habe dazu einen PC der drei Anschlüsse enthält abgefragt. Unter dem Betriebssystem Windows XP werden alle Druckerports im Hash %port korrekt abgespeichert. Wenn das ganze jedoch auf einem anderern Rechner unter Vista ausgeführt wird enthält der Rückgabewert %port jedoch nur einen Druckerport und nicht alle Drei. Woran kann das liegen?
Hier die Funktion:
Warum ist ausserhalb der Schleife bei Vista nur ein Druckerport im Hash %port?
Vielen Dank!!
möchte in einem Hashfeld alle bestehenden Druckerports (Anschlüsse) eines im Netzwerk befindlichen Rechners einlesen. Habe dazu einen PC der drei Anschlüsse enthält abgefragt. Unter dem Betriebssystem Windows XP werden alle Druckerports im Hash %port korrekt abgespeichert. Wenn das ganze jedoch auf einem anderern Rechner unter Vista ausgeführt wird enthält der Rückgabewert %port jedoch nur einen Druckerport und nicht alle Drei. Woran kann das liegen?
Hier die Funktion:
Code:
sub getDruckerPorts { my $host=$_[0]; my ($ret,@data)=doCmd("prnport","-s $host -l"); my %port; my $name; for my $line (@data) { $name=$1 if $line =~ /^Anschlussname (.*)/; if ($line =~/^Hostadresse (.*)/) { $port{$name}=$1; print $port{$name}=$1; #Test:Liefert als Ergebnis bei XP oder Vista jeweils die 3 Druckerports --> Ergebnis korrekt! } } print %port; #Test: Liefert bei XP 3 Druckerports, bei VISTA jedoch nur einen --> Ergebnis falsch! return %port; for my $n (keys %port) { print "$n -> $port{$n}\n"; } }
Vielen Dank!!
Comment