Điểm:0

Cách thực hiện: Nếu người dùng đã thoát, hãy tạo người dùng có "1" sau tên của họ -PowerShell Active Directory

lá cờ ug

Tôi có một tập lệnh được viết ở đây để kiểm tra xem AD đã tồn tại chưa. Nếu chúng tồn tại, thì kịch bản sẽ cho tôi biết. Nếu không, thì nó sẽ tạo ra chúng:

    if (Get-ADUser -F { SamAccountName -eq $username }) {
        
        # Nếu người dùng tồn tại, hãy đưa ra cảnh báo
        Cảnh báo ghi "Tài khoản người dùng có tên người dùng $username đã tồn tại trong Active Directory."
    khác {

##Sau đó, nó tiếp tục ở đây với việc tạo người dùng

Điều tôi muốn làm là, nếu chúng tồn tại, hãy tạo người dùng có cùng quy ước đặt tên nhưng đặt "1" sau tên của họ. Tôi biết điều này nghe có vẻ ngớ ngẩn.... nhưng tôi đã được hỏi liệu điều đó có khả thi không.

Và nếu chúng không tồn tại, thì hãy tiếp tục như bình thường và tạo chúng :)

Bất kỳ trợ giúp sẽ được đánh giá cao phụ nữ và gents.

Cảm ơn bạn :)

lá cờ br
[1] thực hiện cuộc gọi đối với AD của bạn để xem liệu có bất kỳ cuộc gọi nào có tên người dùng cơ bản đó không. ví dụ - `-like 'SmithJ*'`. [2] buộc kết quả là một mảng bằng cách gói lệnh gọi trong `@()`. [3] nếu `$Result.Count` khác 0, hãy lấy các hậu tố chữ số, sắp xếp để tìm cao nhất, tăng dần 1 và cuối cùng sử dụng số đó để tạo tên người dùng mới của bạn.
Điểm:0
lá cờ in

Vì vậy, trước tiên, bạn không cần gán các giá trị của mình từ The csv cho các biến, chúng đã được tải vào đối tượng và nằm trong bộ nhớ, vì vậy bạn có thể chuyển $username thành $user.username lặp lại nó cho phần thêm người dùng, chỉ cần thay đổi tên sau khoảng thời gian cho tập dữ liệu. Tôi nghĩ tôi hiểu chuyện gì đã xảy ra, vì vậy nếu bạn có john doe trong hệ thống và 2 john doe khác trong danh sách của bạn, thì lần đầu tiên nó tạo john.doe1 và thành công nhưng lần thứ hai thì không thành công. Vì vậy, bạn cần kéo chuỗi tên người dùng cắt nó đến ký tự cuối cùng, so sánh xem ký tự cuối cùng là ký tự hay số. Nếu một chữ cái thì nối 1 nếu một số thêm 1 vào nó và thay vào đó nối số đó. Có lý? Trên điện thoại của tôi, viết mã và nghiên cứu cú pháp là một nỗi đau xin lỗi.

lá cờ ug
Cảm ơn vì đã trả lời. Tôi sẽ thành thật một cách trắng trợn và nói không, điều đó chẳng có ý nghĩa gì với tôi :(. Chỉ là một thứ mà tôi chưa bao giờ phải loay hoay với nó nên đủ ý nghĩa để viết nó vào và nó hoạt động chính là nơi tôi đâm vào tường
Aalom avatar
lá cờ in
Tôi sẽ nhảy lên máy tính xách tay và cố gắng kết hợp một số thứ lại với nhau, tôi đã phải tập hợp một tập lệnh AD trước khi rất tiếc là tôi không có quyền truy cập vào mã nguồn mà mình đã viết.
lá cờ ug
Cảm ơn bạn rất nhiều!! Tái bút Vui lòng sao chép và dán tập lệnh của tôi và thêm vào những gì bạn cần. Tôi không phiền phức chút nào.
Điểm:0
lá cờ ug

##kịch bản đầy đủ##

$ADUsers = Nhập-Csv C:\ps\usercreation.csv

$UPN = "METest.local"

foreach ($User trong $ADUsers) {

    #Gán dữ liệu trong csv cho một biến
    $username = $User.username
    $password = $User.password
    $firstname = $User.firstname
    $lastname = $User.lastname
    $OU = $User.ou #Trường này đề cập đến đơn vị tổ chức mà tài khoản người dùng sẽ được tạo trong
    $telephone = $User.telephone
    $jobtitle = $User.jobtitle

    #Kiểm tra xem người dùng đã tồn tại trong AD chưa
    if (Get-ADUser -F { SamAccountName -eq $username }) {
        
        #Warn nếu người dùng đã tồn tại
        Cảnh báo ghi "Tài khoản người dùng có tên người dùng $username đã tồn tại trong Active Directory."
    }
    khác {

        #Người dùng không tồn tại sau đó tiến hành tạo tài khoản người dùng mới
        Người dùng AD mới `
            -SamAccountName $Username `
            -UserPrincipalName "[email protected]" `
            -Tên "$Firstname $Lastname" `
            -GivenName $Firstname `
            -Họ $Lastname `
            -Đã bật $True `
            -DisplayName "$Lastname, $Firstname" `
            -Đường dẫn $OU `
            -OfficePhone $điện thoại `
            -Tiêu đề $jobtitle `
            -AccountPassword (chuỗi chuyển đổi bảo mật $Password -AsPlainText -Force) -PasswordNeverExpires:$false -ChangePasswordAtLogon:$True

        #Nếu người dùng này tồn tại
        Máy chủ ghi "Tài khoản người dùng $username được tạo." -ForegroundColor Cyan
        
        # Thời gian ngủ để đồng bộ hóa cho Exchange đẩy
        #write-host Đang tạm dừng để đồng bộ hóa Exchange....
        #start-sleep -300 giây
    
    #Áp dụng giấy phép cho người dùng được tạo trong AD sau đó được đồng bộ hóa với Exchange
        #Set-MsolUserLicense -UserPrincipalName $newuser.UserPrincipalName -AddLicenses UI-OF-LICENSE-HERE   
        #Set-MsolUserLicense -UserPrincipalName $newuser.UserPrincipalName -AddLicenses UI-OF-LICENSE-HERE
        
    }
}

Read-Host -Prompt "Nhấn Enter để thoát"

Tái bút đừng bận tâm về tất cả các bình luận...chúng ở đó nên nó không chạy một số thứ nhất định trong khi tôi kiểm tra

Điểm:0
lá cờ in

Trong câu lệnh if của bạn với cảnh báo, chỉ cần thêm

$username = $username + "1"

Và sau đó lặp lại mã trong phần khác của bạn.

Luôn có thể dọn sạch nó và đặt mã tạo tài khoản vào một hàm và gọi nó trong từng phần của câu lệnh if.

lá cờ ug
Xin chào Aalom, cảm ơn bạn đã trả lời. Khi tôi đặt "$username = $username + "1" " trong câu lệnh IF, nó dường như không làm được gì nhiều. Nó chạy qua tập lệnh như bình thường, sau đó ở cuối nó ghi CẢNH BÁO: Người dùng có tên người dùng test.test1 đã tồn tại trong thư mục. Và khi tôi tìm kiếm AD, không có ai ở đó với cái tên đó. Điều tôi cần làm là tạo một tài khoản trùng lặp hoàn toàn với tài khoản đã có, nhưng chỉ là "test.test1" thay vì "test.test" Đánh giá cao sự giúp đỡ
Aalom avatar
lá cờ in
Bạn có đảm bảo mã thực thi add-aduser sau khi thay đổi biến $username không? Tôi cho rằng bạn đang chạy trong một loại vòng lặp nào đó ở đây, nếu có thì nó trông như thế nào?
lá cờ ug
Này, một lần nữa, Tôi sẽ dán tập lệnh của mình vào câu trả lời cho tập lệnh để dễ đọc hơn
Điểm:0
lá cờ in

Tôi đã không thực sự chạm vào các phần nhận xét, nhưng hy vọng điều này sẽ cho bạn một ý tưởng. Tôi không có sẵn máy chủ AD để kiểm tra nó, chỉ cần lưu ý rằng tôi không thể đảm bảo 100% cho nó

xác thực hàm($User){
    if (Get-ADUser -F { SamAccountName -eq $User.username }) {
        $ số người dùng = 1
        trong khi (Get-ADUser -F { SamAccountName -eq ($User.username + $usernumber)}){
            $usernumber++
        }
        $NewUserName = $User.username + $usernumber
        Add_User($NewUserName, $User)
        }
        khác {
            $NewUserName = $User.username
        Add_User($NewUserName, $User)
        }
}

hàm Add_User($Username, $User){
Người dùng AD mới `
            -SamAccountName $Username `
            -UserPrincipalName "$Username" + "@MEtest.com" `
            -Tên "$Firstname $Lastname" `
            -GivenName $User.Firstname `
            -Họ $User.Lastname `
            -Đã bật $True `
            -DisplayName "$User.Lastname, $User.Firstname" `
            -Đường dẫn $User.ou `
            -OfficePhone $User.telephone `
            -Title $User.jobtitle `
            -AccountPassword (chuỗi chuyển đổi bảo mật $Password -AsPlainText -Force) -PasswordNeverExpires:$false -ChangePasswordAtLogon:$True
}

$ADUsers = Nhập-Csv C:\ps\usercreation.csv

$UPN = "METest.local"

foreach ($User trong $ADUsers) {
    xác thực($User)

        #Nếu người dùng này tồn tại
        Máy chủ ghi "Tài khoản người dùng $username được tạo." -ForegroundColor Cyan
        
        # Thời gian ngủ để đồng bộ hóa cho Exchange đẩy
        #write-host Đang tạm dừng để đồng bộ hóa Exchange....
        #start-sleep -300 giây
    
    #Áp dụng giấy phép cho người dùng được tạo trong AD sau đó được đồng bộ hóa với Exchange
        #Set-MsolUserLicense -UserPrincipalName $newuser.UserPrincipalName -AddLicenses UI-OF-LICENSE-HERE   
        #Set-MsolUserLicense -UserPrincipalName $newuser.UserPrincipalName -AddLicenses UI-OF-LICENSE-HERE
        
    }
}

Read-Host -Prompt "Nhấn Enter để thoát"
lá cờ ug
Cảm ơn! :). Thật không may, tôi đã nhận được điều này :( --> Người dùng AD mới: Không thể chuyển đổi 'System.Object[]' thành loại 'System.String' theo yêu cầu của tham số 'SamAccountName'. Phương thức được chỉ định không phải là được hỗ trợ. Tại dòng:18 ký tự:29 + -SamAccountName $Username ` + ~~~~~~~~~ + CategoryInfo : UnlimitedArgument: (:) [Người dùng AD mới], ParameterBindingException + FullQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.NewADUser
Aalom avatar
lá cờ in
Nếu bạn vừa chạy nó và trên ISE thì trong dấu nhắc co.mand ở dưới cùng, hãy nhập $Username và xem kết quả trả về
lá cờ ug
Nó trả về cái này: PS C:\Windows\system32> $username Ông Vương. Và đó là 1 trong những tên người dùng thử nghiệm trong tệp .csv của tôi
Aalom avatar
lá cờ in
Bạn có thể thêm một chuỗi ngoài vào nó để chuyển đổi từ đối tượng thành chuỗi. Vì vậy -SamAccountName $Username ` sẽ trở thành -SamAccountName $Username | chuỗi ngoài `
lá cờ ug
Đây là lỗi tôi gặp phải sau khi thay thế -> https://i.stack.imgur.com/SXHyS.png
Aalom avatar
lá cờ in
Nó gặp vấn đề với việc tìm thuộc tính tên người dùng của đối tượng csv, có cột tên người dùng không? Tên tiêu đề là gì?
lá cờ ug
Xin chào @Aalom. Các tiêu đề là " FirstName | LastName | UserName | Password | JobTitle | OU | PhoneNumber
Aalom avatar
lá cờ in
Đảm bảo rằng tất cả các thuộc tính đối tượng tương ứng được viết phân biệt chữ hoa chữ thường. Vì vậy, $User.username phải là $User.UserName, v.v.
lá cờ ug
Tôi đã chắc chắn rằng mọi thứ đều phù hợp.Chỉ cần tạo bảng excel tất cả chữ thường để làm cho việc kiểm tra đơn giản hơn vào lúc này. Vì một số lý do, vẫn nhận được điều này https://i.stack.imgur.com/ZhPrc.png
Aalom avatar
lá cờ in
Đảm bảo trên dòng 2 là $User.username nếu tên biến đối tượng là $User và tiêu đề hiện là tên người dùng.
lá cờ ug
Xin chào Aalom. Cảm ơn bạn một lần nữa rất nhiều vì sự giúp đỡ tiếp tục của bạn. Bạn không biết tôi đánh giá cao sự giúp đỡ như thế nào đâu. Tôi đã thử những gì bạn nói, vẫn có cùng một lỗi :(. Tôi sẽ đính kèm ảnh chụp màn hình mã, .csv và lỗi tất cả trong một để có thể nó sẽ có ý nghĩa hơn đối với con mắt được đào tạo https://i.stack.imgur.com/xD43D.png
Aalom avatar
lá cờ in
Đợi nó tạo tài khoản à? Nếu vậy, điều gì sẽ xảy ra khi bạn chạy lại tập lệnh mà không xóa tài khoản thử nghiệm? Có lỗi biến mất và thêm 1 vào tên người dùng không?
Aalom avatar
lá cờ in
Nếu đúng như vậy thì nó sẽ trả về lỗi vì tài khoản không tồn tại trong AD. Nhưng cuối cùng vẫn cung cấp giá trị sai cho bộ so sánh và tiếp tục. Để xóa cảnh báo, hãy sử dụng bỏ qua -erroraction sau } của câu lệnh get-aduser.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.