0

こんにちは!温かい飲み物とスノーシューでみんなが落ち着いてくれますように。

私は AD のユーザー作成スクリプトに取り組んでおり、奇妙な動作に遭遇しました。ここでの目標は、個人の SAMID が既に存在するかどうかを確認し、存在する場合は、SAMID に「1」を追加することです。

たとえば、「Jaina Proudmoore」をユーザーとして使用してみましょう。

import-csv $inputCSV | foreach {
$FullName = $_.FullName
$company = $_.Company
$Givenname = $fullname.Split(" ")[0]
$Surname = $fullname.split(" ")[1]
$firstInitial = ($fullname.substring(0,1)).ToLower()
$surnameLower = $surname.ToLower()
$GivennameLower = $Givenname.ToLower()
$samid = $firstInitial + $surnameLower

$samidcheck = get-aduser $samid
if ($samid -ne $null) {
$samid = $samid + 1
}

$Description = "Created By NewUserCreation Script $DateFormat"
$global:Department = $_.Department
$Title = $_.Title
$Office = $_.Office
$StreetAddress = $_.StreetAddress
$PostalCode = $_.PostalCode
$ManagerFullName = $_.Manager
$ManagerDN = (get-aduser -filter 'Name -like $ManagerFullName').DistinguishedName
$Country = "CA"
$co = "Canada"
$OfficePhone = $_.OfficePhone
$MobilePhone = $_.MobilePhone
$countryCode = "124"
$City = $_.Location
$GroupSourceUser = $_.GroupSourceUser
$GroupSourceUserDN = (get-aduser -filter "Name -like '$GroupSourceUser'").DistinguishedName

$ADUserCheck = get-aduser -Filter 'Name -like $FullName' -ErrorAction SilentlyContinue

この場合、SAMID チェックで次の結果が得られるはずです。

$samidcheck = get-aduser jproudmoore

これを手動で実行する場合:

get-aduser : Cannot find an object with identity: 'jproudmoore' under: 'DC=home,DC=local'.
At line:1 char:1
+ get-aduser jproudmoore
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (jproudmoore:ADUser) [Get-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

これを正しく理解すると、「ユーザーが見つかりませんでした」ということになります。したがって、SAMID は「jproudmoore」として作成する必要があります。ただし、スクリプトは出力を NOT null として検出したかのように、「jproudmoore1」を作成します。

if ($samid -ne $null) {

オブジェクトが見つからないというエラーがあったため、出力が実際には null に等しくないと仮定します。したがって、次のようになります。

$samid = $samid + 1
}

ここで何が欠けていますか?当たり前のような気がします。

お時間をいただきありがとうございます。素晴らしい一週間をお過ごしください。

  • 編集 -

これも手動で試しました:

$test = get-aduser jproudmoore
if (!$test) {write-host "variable is null"}
PS > variable is null

ここで私が正しければ、SAMID チェックで "1" を追加すべきではなかったことを意味します。

4

1 に答える 1