저는 AD 사용자 생성을 자동화하기 위해 Powershell 스크립트를 작성하려고합니다. 우리는 혼합 된 Linux/Windows 환경이며 실수로 재사용하지 않도록 텍스트 (현재 CSV) 파일을 사용하여 이전 Linux UID # 및 사용자 이름을 추적합니다. 내 스크립트에서 파일을 구문 분석하려고하지만 비교가 작동하지 않는 것 같습니다.powershell if 문이 실행되지 않습니다.
$sam = $GivenName.substring(0,1).ToLower() + $lastname.ToLower()
$usernames=Import-csv "uid.csv"
ForEach($users in $usernames){
if($usernames.username -contains $sam){$uid = $true}
}
내가 파일에서 배열로 데이터를 읽을 수있는 웹 주변에서 발견 한 여러 가지 방법을 사용했지만 문제가 될 것으로 보인다 즉, 그것은 $의 UID를 설정하지 상관없이 = $ true와 나는 이유를 모른다.
편집
: 나는이에 if 문을 변경 :if($users.username -contains $sam){$uid = $true}
그것은했다. 도와 주셔서 감사합니다!
혼란을 해결하기 위해 $ GivenName과 $ lastname은 사용자가 입력했으며 재사용 된 사용자 이름을 피하려고하기 때문에 정확한 일치를 찾고 있습니다. 또한 -contains를 -eq로 변경하면 작동합니다. 나는 너무 오래 길을 위해 이것을 싸우고 있었고, 만약 내가 Powershell 멍청이라고 말할 수 없다면.
'$에서 온 lastname'? 즉,'$ sam'의 가치가 정확하다는 확신이 있습니까? 이 부분이 다른 소스에서 파생 된 사용자 모음을 통해 반복되는 큰 스크립트 (내부 루프)의 일부입니까? – alroc
username 열에 저장된 값이'$ sam' 또는 부분 일치에 정확히 일치합니까? –
헤더 행을 포함하여 ** uid.csv **의 처음 몇 줄을 게시하십시오. 또한 ** $ givenname ** 및 ** $ lastname **을 어떻게 할당합니까? 관련 코드를 표시하고 데이터 소스의 예를 제공하여 사용자가 어떻게 보이는지 볼 수 있습니다. –