Zum Inhalt wechseln


Foto

IF Abfrage Get-ADUser


  • Bitte melde dich an um zu Antworten
5 Antworten in diesem Thema

#1 Peterzz

Peterzz

    Junior Member

  • 155 Beiträge

 

Geschrieben 17. Februar 2017 - 12:35

Hallo zusammen,

 

ich habe ein Powershell Script bei dem ich ein Problem mit einer IF-Abfrage und  der Bedingung "not equal" (-ne) habe.

Folgendes Testscript soll mein Problem veranschaulichen. 

param
(
[Parameter(Mandatory=$True,Position=1)]
[string]$Benutzername
)
If (Get-ADUser -filter {SamAccountName -ne $Benutzername})
{
Write-Host "Benutzer nicht da"
}
Else 
{
Write-Host "Benutzer ist da"
}

Das Script gibt mir immer "Benutzer nicht da" aus, obwohl der Benutzername gleich einem SamAccountName ist.

Benutze ich anstelle von "-ne" "eq" wird immer die richtige Auswahl (Text müsste natürlich getauscht werden)  angezeigt. 

 

Warum funktioniert die Bedingung -ne anders als -eq?



#2 NilsK

NilsK

    Expert Member

  • 12.096 Beiträge

 

Geschrieben 17. Februar 2017 - 12:41

Moin,

 

vielleicht mal richtigrum gefragt: Was willst du denn erreichen?

 

Deine Abfrage würde dir alle User zurückgeben, die nicht den überreichten Logonnamen haben. Also je nach Domäne schon mal zigtausend Stück in einem Array. Schon ziemlich klar, dass das "falsch" ist, wenn du es mit einem String vergleichst.

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#3 Peterzz

Peterzz

    Junior Member

  • 155 Beiträge

 

Geschrieben 17. Februar 2017 - 12:55

Ich möchte im AD nachschauen, ob es diesen Benutzer (händische Eingabe) schon gibt und wenn nicht, dann soll z.B. ein Text erscheinen und wenn ja dann ... .

 

Mit einer equal-Bedingung scheint es auch zu funktionieren.



#4 NilsK

NilsK

    Expert Member

  • 12.096 Beiträge

 

Geschrieben 17. Februar 2017 - 13:01

Moin,

 

warum deine Abfrage nicht funktioniert, habe ich ja schon geschrieben. Bei sowas musst du die dahinter stehende Logik immer genau im Blick behalten.

 

In deinem Fall wäre es wohl am besten, den gewünschten User mit "equals" abzufragen und darauf zu reagieren:

if (Get-ADUser -Filter {samaccountname -eq $Suchwert}) {
  'gibts'
  } else {
  'gibts nicht'
}

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#5 Peterzz

Peterzz

    Junior Member

  • 155 Beiträge

 

Geschrieben 17. Februar 2017 - 14:06

Danke, dann werde ich es mit einem -eq bewerkstelligen.



#6 daabm

daabm

    Expert Member

  • 2.086 Beiträge

 

Geschrieben 17. Februar 2017 - 22:38

Erinnert mich an WMI-Filter auf "ist nicht vorhanden", geht ja auch nicht :-)

 

Anders formuliert: Einen User, der anders heißt, gibt es immer. Deshalb landet Deine Abfrage immer im ersten Teil. Du mußt die Logk umbauen.


Greetings/Grüße, Martin

Mal ein gutes Buch über GPOs lesen? Oder ein kleines, aber feines Blog darüber?

Und wenn mir die IT mal auf die Nerven geht - coke bottle design refreshment (-: