2016-12-13 3 views
0

Zeit in einem fremden Fehler mit einer Funktion Powershell ausgeführtPowershell-Skript Rekursionsfehlers

Hier ist der Code:

import-module ActiveDirectory 
function Reset-Passwords{ 

#Imports csv containing user details. The column names indicate the property type of the values in each row. 
$users = import-CSV -path "C:\Users\administrator\Desktop\Powershell\Scripts\NQSMoves\NQS\NQSDetails.csv" 
$SamAccountNames = $Users | select sAMAccountName 

$password = Convertto-SecureString -string "228Hamilton" -asPlainText -force 


foreach($SamAccountName in $SamAccountName){ 
    set-adAccountPassword -identity $SamAccountName -reset -newPassword $password 
} 


} 
Reset-Passwords 

Sobald er ausgeführt wird, den Fehler ausgibt:

The script failed due to call depth overflow. The call depth reached 1001 and the maximum is 1000. 

Von dem, was ich habe zusammengetragen, das ist ein Rekursionsfehler.

Allerdings gibt es nur 26 '$ samAccountName' Variablen, so dass die foreach-Schleife nur 26 mal laufen sollte? Die CSV-Datei selbst hat nur 26 Zeilen, so dass dies die foreach-Schleife begrenzen sollte.

Dies ist nur ein Teil eines größeren AD-Verwaltungsskript und es ist der einzige Teil, der Probleme gibt.

Jede Hilfe würde sehr geschätzt werden.

+1

Ist dies der richtige Code, sollte es foreach ($ SamAccountName in $ SamAccountNames) – superblygeneralobject

+0

Die nicht Listen Sie Ihre Iteration über ist nicht, was Sie denken, dass es ist. Das könnte zu dem Problem beitragen. –

+0

Außerdem sehe ich keine Rekursion im Code – superblygeneralobject

Antwort

0

Als hervorragend allgemeines Objekt, angegeben. Wenn das tatsächlich der Code ist, den Sie ausführen, werden Sie momentan wiederholt.

Ich würde vereinfachen folgende Änderung Ihr Skript machen:

ForEach($SamAccountName in $Users.SamAccountName){ 
.... 
} 

Dies würde ermöglichen es Ihnen, loszuwerden, die $SamAccountNAmes = $Users | select sAMAccountName Zeile Code bekommen Sie haben.

Es wäre auch das Problem beheben Sie haben, wo der Code selbst

Hope Looping Dies hilft

+0

Ich schloss und öffnete Powershell ISE. Jetzt heißt es, dass das set-ADAccountPassword ein Argument $ null bei -identity nicht akzeptieren kann. – Zeruko