Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Höchste HomePhone Nummer ermitteln und diese um 1 erhöhen

$
0
0

Hallo zusammen,

wir haben in unserem AD den Eintrag "Privat" (alias HomePhone) für eine Schnittstelle zu unserem Ticketsystem als eindeutige Benutzer-ID missbraucht. Aktuell sitze ich an einem PowerShell-Script zur einfacheren und fehlerfreieren Anlage von Benutzern. Leider bin ich gerade eben auf ein Problem gestoßen, welches sich für mich als unlösbar darstellt - wohl weil mir die Erfahrung fehlt, aber ich weiß es nicht.

Mit

$ADUsers = Get-ADUser -Filter * -SearchBase "OU=$OU2,OU=$OU1,DC=$DC2,DC=$DC1" -Properties * | Select-Object HomePhone

lade ich uns alle HomePhone-Einträge in das Array $ADUsers - soweit so gut. Ich kann mir die Einträge auch anzeigen lassen (Da es in meiner Test-OU nur 4 gibt, ist das auch relativ schnell, einfach und fehlerfrei geschehen. Angezeigt werden mir dann als Ergebnis

HomePhone
---------

1000384
1000385
9000001

Problem Nummer 1: Die erste Zeile mit dem "Nullwert" stört. Solange man nur einen Nullwert hat, springt man im Array halt einfach die Zeile 1 an, statt der Zeile 0. Keine Lösung aber fürs Erste ein Workaround - wenn es für Problem 2 eine Lösung gibt, wird die sicher auch helfen Problem 1 zu eliminieren.

Problem Nummer 2: Mit keiner ergoogelten Lösung ist es mir gelungen, diese Einträge als Zahlen verglichen und dementsprechend automatisch den nächst höheren Wert ermittelt zu bekomme.

Ich habe es mit einer Hashtabelle versucht, bin allerdings am Datentyp gescheitert. Ich habe es mit measure -maximum probiert, bin aber auch da wieder am Datentyp gescheitert. Das Problem stellt sich für mich so dar, dass die Werte eigentlich als @{HomePhone=9000001} im Array stehen, es diese aber nicht in jedem Context so ausgibt. Stringmanipulationen sind natürlich auch gescheitert. Ich bin an der Stelle ratlos. Ich möchte doch im Grunde nur, dass mir das Script für den nächsten, neuen Benutzer automatisch die 9000002 als nächst höhere Nummer auswählt. Ist diese dann vorhanden, eben beim nächsten Mal die 9000003 usw.

Wäre nett, wenn mir bei dem Problem jemand helfen kann - ich sitze jetzt hier fast 2 Stunden und verzweifel daran, insbesondere, da der Rest des Scripts inzwischen eigentlich steht (inklusive GUI für Gruppenrechtevergabe). Es wäre sehr ärgerlich, wenn es an so einer Banalität (meiner Meinung nach) wie der ID unseres Ticketsystems pro Benutzer scheitern würde.

Grüße

Herberttito

Edit:

Mal zur Sicherheit noch den Rest vom Script - dann braucht hier keiner der eventuell ebenfalls das Problem analysieren will, alles selbst schreiben:

import-module ActiveDirectory

$DC1 = "local" #oder Äquivalent
$DC2 = DOMÄNENNAME #der AD-Name ohne .local oder Äquivalent - dieses gehört unter DC1
$OU1 = "" #OU der Benutzer direkt unter der Domäne
$OU2 = "" #eventuelle Unter-OU erste Ebene
$OU3 = "" #eventuelle Unter-OU zweite Ebene (tiefer geht es bei uns nicht=

#Deklaration des Arrays
$ADUsers = @()

$ADUsers = Get-ADUser -Filter * -SearchBase "OU=$OU2,OU=$OU1,DC=$DC2,DC=$DC1" -Properties * | Select-Object HomePhone
$ADUsersCounter = @($ADUsers).Count

$ADUsersCounter
$ADUsers

Write-Host "Beliebige Taste zum beenden drücken ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")



Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>