نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

کاربران را از اکتیو دایرکتوری وارد کنید.

سلام به همه. امروز به شما نشان خواهم داد که چگونه می توانید با استفاده از یک اسکریپت، افزودن کاربران به AcriveDirecotory را خودکار کنید. ما داده های کاربر را از یک فایل CSV می گیریم.

می توانید آرشیو را با اسکریپت دانلود کنید. در همان آرشیو نصب کننده .net 4.5 و powershell 5.1 را برای 2008R2 قرار دادم.

نمونه ای از فایل CSV من:

نام کامل، موقعیت، بخش، شماره اتاق، شماره تلفن پست الکترونیک؛مشخص کننده
ایوانف ایوان ایوانوویچ؛ کارگردان؛ 76؛ 345؛ 123؛ 00000001
پتروا ایرینا پترونا؛ دستیار آزمایشگاه؛ 77؛ 367؛ 124؛ 00000002
واسیلیف واسیلی واسیلیویچ؛ مدیر؛ 78؛ 389؛ 125؛ 00000003
الکساندروف الکساندر الکساندرویچ؛ معاون مدیران;79;411;126; 00000004
سرگئیف سرگئی سرگیویچ;دستیار آزمایشگاه;80;433;127; 00000005

بر این اساس، همه فیلدها را وارد AD می کنیم. نام کامل به نام خانوادگی، نام و نام خانوادگی تقسیم می شود. نام کاربری ما از حرف اول نام و نام خانوادگی تشکیل می شود که به نویسه گردانی ترجمه می شود.

در صورتی که نام کاربری از قبل وجود داشته باشد، 2 حرف از نام و غیره می گیریم.

به قسمت شناسه توجه کنید. فقط برای تعیین اینکه اگر یک همنام ظاهر شد، یک کاربر جدید اضافه کنید یا یک کاربر موجود را ویرایش کنید، لازم است.

اگر یک رکورد با یک شناسه موجود ظاهر شود، داده های کاربر به روز می شوند.

همچنین هنگام اجرای اسکریپت ما با کلید -del، کاربرانی که در فایل CSV حضور دارند از AD حذف می شوند.

من اسکریپت را روی ویندوز 2008R2 با نصب powershell 5.1 تست کردم، یعنی باید روی ویندوز 2012 و 2016 هم کار کند.

برای نصب PowerShell 5.1 روی 2008R2، حداقل باید اولین مورد روی آن نصب شود. سرویس پک. و همچنین.net 4.5. (نصب کننده دات نت و پاورشل را با اسکریپت به آرشیو اضافه کردم. می توانید SP1 را برای ویندوز 2008R2 از لینک دانلود کنید).

برای اینکه Powershell اسکریپت را اجرا کند، باید این دستور را به عنوان مدیر اجرا کنید:

دور زدن Set-ExecutionPolicy

به متغیرهای ابتدای اسکریپت توجه کنید؛ آنها مسیر و نام فایل csv، رمز عبوری که به کاربران اختصاص داده می شود و همچنین نام دامنه را تعیین می کنند.

متن اسکریپت:

#نوشته شده برای سایت https://www.mytechnote.ru #برای اینکه اسکریپت کار کند، باید powershell را آپدیت کنید، برای این #ابتدا باید sp1 (https://www.microsoft.com/ru-ru) را نصب کنید. /download/details.aspx?id =5842) #به سرور، اگر قبلاً نصب نشده باشد. #Next.net 4.5 (dotNetFX45_Full_setup) #پس از آن باید powershell را به نسخه 5.1 به روز کنید (در پاورشل در حال اجرااز طرف مدیر، گذر Set-ExecutionPolicy را اجرا کنید و اسکریپت نصب را از بایگانی powershell51.zip اجرا کنید) #هنگام اجرای اسکریپت، poweshell باید به عنوان سرپرست اجرا شود #وقتی بدون کلید راه اندازی شد، کاربران اضافه و به روز می شوند # هنگامی که با کلید -del راه اندازی می شوند، کاربران حذف خواهند شد ############################################################## ############################################### ############################################### ############################################### ######### import-module activedirectory #variables: #مسیر به فایل CSV $pathToCSV=".\f_151592b94af8a58e.csv" #گذرواژه که به کاربران جدید داده می شود $defpass="As12345^" #specify دامنه ما $domain="@test.loc" #transliteration function function global:Translit ( param($inString) $Translit = @( "a" = "a" "A" = "a" "b" = "b" "B" = "b" "c" = "v" "V" = "v" "g" = "g" "G" = "g" "d" = "d" "D" = "d" " e" = "e" "E" = "e" "e " = "yo" "Ё" = "eo" "zh" = "zh" "Zh" = "zh" "z" = "z" "Z" " = "z" "i" = "i" "I" = "i" "th" = "j" "Y" = "j" "k" = "k" "K" = "k" "l" = "l" "L" = "l" "m" = "m" "M" = "m" "n" = "n" "N" = "n" "o" = "o" "O" = "o" "p" = "p" "P" = "p" "р" = "r" "Р" = "r" "с" = "s" "С" = "s" "т" = " t" "Т" = "t" "у" = "u ""U" = "u" "f" = "f" "F" = "f" "x" = "h" "X" = "h" " "تس" = "تس" "تس" = "تس" "چ" = "چ" "Ч" = "چ" "ш" = "ش" "Ш" = "ش" "ш" = "ش" "Ш" = "sch" "ъ" = "" "Ъ " = "" "ы" = "y" "ы" = "y" "ь" = "" "ь" = """"" = " e" "Э" = "e" "у" = "yu " "Yu" = "yu" "ya" = "ya" "I" = "ya" ) $outCHR="" foreach ($CHR در $inCHR = $inString.ToCharArray()) (اگر ($Translit[$ CHR] -cne $Null) ($outCHR += $Translit[$CHR]) دیگری ($outCHR += $CHR) ) خروجی نوشتن $outCHR) #import فایل csv به متغیر $csv=import-Csv $pathToCSV - Encoding OEM -Delimiter ";" #تجزیه متغیر foreach ($user در $csv) ( #put in مقادیر متغیراز فایل csv $fio="$($user.full name)" $surname=$fio.split(" ") $name=$fio.split(" ") $sname=$fio.split(" ") $ dolzhnost ="$($user.position)" $depart="$($user.department)" $room="$($user."room number")" $phone="$($user."شماره تلفن " )" $mail="$($user."email")" $id=$($user."identifier") #translate نام و نام خانوادگی به ترجمه $transName=Translit($name) $transSurname=Translit( $ نام خانوادگی) #پاک کردن حروف اول نام $shortName="" #افزودن حروف به متغیر shortname (متغیر برای ایجاد یک ورود) برای ($i=1; $i -lt $transName.length; $i++) ( #بسته به تعداد گذرنامه ها، حروف i را اضافه کنید $shortName=$transName.substring(0,$i) #حروف نام را به نام خانوادگی اضافه کنید $userName=$shortName+$transSurname try ( #بررسی کنید آیا کاربر وجود دارد $user=Get-ADUser "$userName" ) catch ( $user=$false ) #if user exists if ($user) ( #دریافت شناسه از AD $IDinAD=Get-ADUser $userName -Properties نظر | نظر را انتخاب کنید | ft -HideTableHeaders | خارج از رشته #اگر شماره بیمه از AD با شماره csv if مطابقت داشت ($IDinAD -match $id) (#اگر اسکریپت را بدون آرگومان خراب کردیم اگر ($args -eq "" -یا !$args) ( #به‌روزرسانی داده‌های کاربر Set-ADUser -Identity "$userName" -نام خانوادگی "$surname" -DisplayName "$surname $name $sname" ` -OfficePhone "$phone" -EmailAddress "$mail" -Department "$depart" - عنوان "$dolzhnost" ` -UserPrincipalName "$userName$domain" -GivenName "$name" -Office "$room" -enabled $true -SamAccountName "$userName" #прерываем цикл break } #если запустили скрипт с аргументом -del if ($args -eq "-del") { #удаляем пользователя Remove-ADUser -Identity $userName -Confirm:$false } } #если id не совпадают, и найдено имя пользователя, идем к !} گام بعدیحلقه else ( ) ) #اگر کاربر دیگری وجود نداشته باشد (#و بدون آرگومان اجرا شود if ($args -eq "" -یا !$args) ( try ($users=get-aduser -Filter "*" -Properties comment | نظر، نام ) catch ( $users=$false ) if ($users) ( foreach ($user در $users) (#اگر برخی از کاربران شناسه ای از csv دارند، اگر ($user.comment -match) آن را به روز کنید $id ) ($uname=$user.name.toString() $distName=Get-ADObject -Filter "name -eq $uname" Set-ADUser -Identity "$uname" -Surname "$surname" -DisplayName "$surname" $name $sname" ` -OfficePhone "$phone" -EmailAddress "$mail" -Department "$depart" -Title "$dolzhnost" ` -UserPrincipalName "$userName$domain" -GivenName "$name" -Office "$room" -enabled $true ` -SamAccountName "$userName" Rename-ADObject $distName.DistinguishedName -NewName $userName } } } try { #добавляем пользователя и прерываем цикл New-ADUser -Name "$userName" -Surname "$surname" -DisplayName "$surname $name $sname" ` -OfficePhone "$phone" -EmailAddress "$mail" -Department "$depart" -Title "$dolzhnost" ` -UserPrincipalName "$userName$domain" -GivenName "$name" -Office "$room" -OtherAttributes @{comment="$id"} ` -AccountPassword (ConvertTo-SecureString -AsPlainText "$defpass" -force) -enabled $true ` -ChangePasswordAtLogon $true -SamAccountName "$userName" -erroraction "silentlycontinue" } catch { } break } } } }!}

قدرت فوریه 23, 2014 در 04:47

اسکریپت PowerShellبرای واردات به جنگل اکتیو دایرکتوریو ایجاد فایل با کاربران

  • پاورشل
  • زیرساخت فناوری اطلاعات

ابتدا WS 2012R2 را به صورت DC نصب و پیکربندی کردم و بعد از آن این سوال پیش آمد که چگونه می توان کاربران را به آن اضافه کرد. من لیستی از کارمندان داشتم فایل xlsو سپس تصمیم گرفتم، برای اینکه به صورت دستی کاربران را نکشم، این را با استفاده از PowerShell بهینه کنم.

نمونه های زیادی در اینترنت وجود دارد، اما آنها برای راه حل من خیلی مناسب نبودند، برخی از آنها قطعه کد بودند، برخی دیگر اصلا با WS2012R2 کار نمی کردند، و برخی دیگر کاربران را به دایرکتوری های خاصی اضافه کردند، و من نیاز داشتم که کاربران را به بیش از 70 دایرکتوری همچنین با این وظیفه مواجه شدیم که چگونه یک فایل CSV برای PowerShell مطابق با استانداردهای آن بسازیم.

اول از همه، لازم است نام کامل را به ستون های مختلف تقسیم کنیم، و معلوم شد که MS Excel 2013 یک ابزار نسبتا جالب برای این کار به نام "متن بر ستون" دارد که در تب DATA قرار دارد.

پس از این، فرمت ورود به سیستم برای کاربران اتخاذ شد و تصمیم بر این شد که این حروف اول نام و نام خانوادگی و پس از آن باشد. زیرخطنام خانوادگی کامل (به عنوان مثال: aa_petrov). برای انجام این کار، مجبور شدم آنها را با استفاده از یک اسکریپت VB ترجمه کنم.

اسکریپت انتقال - اسکریپت برای اکسل

تابع Translit (Txt به عنوان رشته) به عنوان رشته Dim Rus به عنوان متغیر Rus = آرایه ("a"، "b"، "c"، "d"، "d"، "f"، "e"، "g"، " ز، «من»، «ج»، «ک»، _ «ل»، «م»، «ن»، «ا»، «پ»، «ر»، «س»، «ت»، «ی» " "، "f"، "x"، "ts"، "ch"، "sh"، _ "sch"، "b"، "s"، "b"، "e"، "yu"، "i" "، "الف"، "ب"، "ج"، "د"، "د"، "ه"، "ه"، "ف"، "ز"، "من"، "ج"، "ک" "L"، "M"، "N"، "O"، "P"، "R"، "S"، "T"، "U"، "F"، "X"، "C"، "چ"، "ش"، "ش"، "ب"، "س"، "ب"، "ه"، "یو"، "یا") Dim Eng As Variant Eng = Array("a"، "b "، "و"، "گ"، "د"، "ه"، "جو"، "ژ"، "ز"، "من"، "ج"، _ "ک"، "ل"، "م" ، "ن"، "و"، "پ"، "ر"، "س"، "ت"، "و"، "ف"، "ح"، "ج"، "چ"، _ "ش"، "sch"، "y"، ""، "e"، "yu"، "ya"، "A"، "B"، "V"، "G"، "D"، "E" ، "جو"، "ژ"، "ز"، "من"، "ج"، "ک"، "ل"، "م"، "ن"، "او"، "پ"، "ر"، _ «S»، «T»، «U»، «F»، «H»، «C»، «Ch»، «Sh»، «Sch»، «Y»، «»، «E»، "Yu"، "Ya") برای I = 1 To Len(Txt) с = Mid(Txt, I, 1) flag = 0 برای J = 0 تا 65 اگر Rus(J) = с سپس outchr = Eng(J) flag = 1 Exit For End If Next J If flag سپس outstr = outstr & outchr Else outstr = outstr & c بعدی I Translit = outstr تابع پایان

و همچنین یک تابع برای تولید داده های ورود اضافه کرد:

LOW(LEFT(Translit(LEFT(D2)))&LEFT(Translit(LEFT(E2)))&"_"&Translit(C2))

پسوردها با استفاده از یک عبارت و تایپ کردن ایجاد شدند نمادهای تصادفی:

="Habrhabr"&RANDBETWEEN(1000;9999)

پس از آن فایل را به صورت csv. با 6 هدر ذخیره کردم وارد شدن؛ کلمه عبور؛ نام خانوادگی؛ نام کوچک؛ نام میانی OU; عنوان شغلیو رمزگذاری فایل را به یونیکد تغییر داد، زیرا اغلب مشکلاتی با ANSI وجود دارد.

سپس اسکریپت PS زیر را نوشتم:

Import-Module ActiveDirectory $Users = Import-Csv -Delimiter ";" -مسیر "C:\Users\Administrator\Desktop\user.csv" $allou = Get-ADOrganizationalUnit -Filter * -SearchBase "OU=Forest,DC=habr,DC=ru" foreach ($User در $Users) ($ ou = $allou | کجا ($_.Name -eq $User.OU) اگر ($ou) ($OU = $ou.DistinguishedName ) دیگری ($OU = "OU=Others,DC=habr,DC=ru"<#Если каталог с таким именем не найден отправляем в OU other#>) $Password = $User.Password $Detailedname = $User.LastName + " " + $User.FirstName + " " + $User.MiddleName $UserFirstname = $User.FirstName $UserLastName = $User.LastName =$JobTame $User .JobTitle $SAM= $User.Login + "@habr.ru" New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $User.FirstName -SLName $User.SLurstName. عنوان $JobTitle -AccountPassword (ConvertTo-SecureString -AsPlainText "H@brHabr" -Force) -Enabled $true -Path $OU )

این اسکریپت به شما این امکان را می دهد که کاربران را در دایرکتوری های خود پراکنده کنید و کسانی را که آنها را ندارند به دایرکتوری Other بفرستید.

با تشکر از توجه شما.

برچسب ها: پاورشل ، دایرکتوری فعال ، اکسل ، csv ، سرور ویندوز 2008، ویندوز سرور 2008 r2، سرور ویندوز 2012، سرور ویندوز 2012r2،

قدرت فوریه 23, 2014 در 04:47

اسکریپت PowerShell برای وارد کردن به جنگل Active Directory و ایجاد یک فایل با کاربران

ابتدا WS 2012R2 را به صورت DC نصب و پیکربندی کردم و بعد از آن این سوال پیش آمد که چگونه می توان کاربران را به آن اضافه کرد. من لیستی از کارمندان در یک فایل xls داشتم و سپس تصمیم گرفتم، برای اینکه کاربران را به صورت دستی وارد نکنم، آن را با استفاده از PowerShell بهینه کنم.

نمونه های زیادی در اینترنت وجود دارد، اما آنها برای راه حل من خیلی مناسب نبودند، برخی از آنها قطعه کد بودند، برخی دیگر اصلا با WS2012R2 کار نمی کردند، و برخی دیگر کاربران را به دایرکتوری های خاصی اضافه کردند، و من نیاز داشتم که کاربران را به بیش از 70 دایرکتوری همچنین با این وظیفه مواجه شدیم که چگونه یک فایل CSV برای PowerShell مطابق با استانداردهای آن بسازیم.

اول از همه، لازم است نام کامل را به ستون های مختلف تقسیم کنیم، و معلوم شد که MS Excel 2013 یک ابزار نسبتا جالب برای این کار به نام "متن بر ستون" دارد که در تب DATA قرار دارد.

پس از این، فرمت ورود کاربران اتخاذ شد و تصمیم بر این شد که این حروف اول نام و نام خانوادگی و پس از خط زیر نام خانوادگی کامل (مثلا: aa_petrov) باشد. برای انجام این کار، مجبور شدم آنها را با استفاده از یک اسکریپت VB ترجمه کنم.

اسکریپت انتقال - اسکریپت برای اکسل

تابع Translit (Txt به عنوان رشته) به عنوان رشته Dim Rus به عنوان متغیر Rus = آرایه ("a"، "b"، "c"، "d"، "d"، "f"، "e"، "g"، " ز، «من»، «ج»، «ک»، _ «ل»، «م»، «ن»، «ا»، «پ»، «ر»، «س»، «ت»، «ی» " "، "f"، "x"، "ts"، "ch"، "sh"، _ "sch"، "b"، "s"، "b"، "e"، "yu"، "i" "، "الف"، "ب"، "ج"، "د"، "د"، "ه"، "ه"، "ف"، "ز"، "من"، "ج"، "ک" "L"، "M"، "N"، "O"، "P"، "R"، "S"، "T"، "U"، "F"، "X"، "C"، "چ"، "ش"، "ش"، "ب"، "س"، "ب"، "ه"، "یو"، "یا") Dim Eng As Variant Eng = Array("a"، "b "، "و"، "گ"، "د"، "ه"، "جو"، "ژ"، "ز"، "من"، "ج"، _ "ک"، "ل"، "م" ، "ن"، "و"، "پ"، "ر"، "س"، "ت"، "و"، "ف"، "ح"، "ج"، "چ"، _ "ش"، "sch"، "y"، ""، "e"، "yu"، "ya"، "A"، "B"، "V"، "G"، "D"، "E" ، "جو"، "ژ"، "ز"، "من"، "ج"، "ک"، "ل"، "م"، "ن"، "او"، "پ"، "ر"، _ «S»، «T»، «U»، «F»، «H»، «C»، «Ch»، «Sh»، «Sch»، «Y»، «»، «E»، "Yu"، "Ya") برای I = 1 To Len(Txt) с = Mid(Txt, I, 1) flag = 0 برای J = 0 تا 65 اگر Rus(J) = с سپس outchr = Eng(J) flag = 1 Exit For End If Next J If flag سپس outstr = outstr & outchr Else outstr = outstr & c بعدی I Translit = outstr تابع پایان

و همچنین یک تابع برای تولید داده های ورود اضافه کرد:

LOW(LEFT(Translit(LEFT(D2)))&LEFT(Translit(LEFT(E2)))&"_"&Translit(C2))

رمزهای عبور با استفاده از یک عبارت و مجموعه ای از کاراکترهای تصادفی ایجاد شدند:

="Habrhabr"&RANDBETWEEN(1000;9999)

پس از آن فایل را به صورت csv. با 6 هدر ذخیره کردم وارد شدن؛ کلمه عبور؛ نام خانوادگی؛ نام کوچک؛ نام میانی OU; عنوان شغلیو رمزگذاری فایل را به یونیکد تغییر داد، زیرا اغلب مشکلاتی با ANSI وجود دارد.

سپس اسکریپت PS زیر را نوشتم:

Import-Module ActiveDirectory $Users = Import-Csv -Delimiter ";" -مسیر "C:\Users\Administrator\Desktop\user.csv" $allou = Get-ADOrganizationalUnit -Filter * -SearchBase "OU=Forest,DC=habr,DC=ru" foreach ($User در $Users) ($ ou = $allou | کجا ($_.Name -eq $User.OU) اگر ($ou) ($OU = $ou.DistinguishedName ) دیگری ($OU = "OU=Others,DC=habr,DC=ru"<#Если каталог с таким именем не найден отправляем в OU other#>) $Password = $User.Password $Detailedname = $User.LastName + " " + $User.FirstName + " " + $User.MiddleName $UserFirstname = $User.FirstName $UserLastName = $User.LastName =$JobTame $User .JobTitle $SAM= $User.Login + "@habr.ru" New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $User.FirstName -SLName $User.SLurstName. عنوان $JobTitle -AccountPassword (ConvertTo-SecureString -AsPlainText "H@brHabr" -Force) -Enabled $true -Path $OU )

این اسکریپت به شما این امکان را می دهد که کاربران را در دایرکتوری های خود پراکنده کنید و کسانی را که آنها را ندارند به دایرکتوری Other بفرستید.

با تشکر از توجه شما.

برچسب ها: پاورشل، دایرکتوری فعال، اکسل، csv، ویندوز سرور 2008، ویندوز سرور 2008 r2، ویندوز سرور 2012، ویندوز سرور 2012r2،

باز هم نیاز بود و هیچ چیز آماده نبود. همه می نویسند چگونه با استفاده از کنسول MS Exchange 2007 \ 2010 مخاطبین را بدست آوریم. اما شرایطی وجود دارد - کنترل کننده دامنه Win2008 است و Exchange 2003 است. این یک دیوانه است، اما اتفاق می افتد، چه برای انجام... و اکنون لازم است تقریباً 6000 مخاطب در آنجا ایجاد کنید. ایجاد یک مخاطب به سادگی دشوار نیست، اما ثبت ویژگی هایی که Exchange برای کار با مخاطبین نیاز دارد، کار دیگری است.
بنابراین، شما باید با استفاده از powershell v یک دسته از مخاطبین ایمیل ایجاد کنید. 2.0.1.1 با استفاده از ماژول AD. من سعی خواهم کرد، طبق معمول، آن را به ساده ترین زبان، قابل درک برای بی تجربه ترین مدیر توصیف کنم.

1. یک فایل در MS Excel ایجاد کنیدبا نام contacts_list ذخیره کنید فرمت CSVدر مسیر C:\CSV قرار دهید و ستون های فایل را به این صورت نام گذاری کنید:

نام ایمیل نام مستعار پست الکترونیکی تایپ کنید آدرس های پروکسی آدرس هدف

در اصل، این پارامترها برای ایجاد یک مخاطب تمام عیار کافی هستند و Exchange آن را می بیند و می تواند با آن کار کند، مهم نیست که در کدام پوشه OU در AD خود دارید.
این ستون ها چه فیلدهای خاصی را در ویژگی های شیء مخاطب منعکس می کنند؟
در اینجا توضیحات، مانند یک علامت است)))

پارامتر ستون - نام در ویرایشگر ویژگی ADSI (توضیحات) - نام گذاری به زبان روسی در ویژگی های تماس

نام - CN (نام متعارف شی) - نام
پست الکترونیکی - پست الکترونیکی (ایمیل) - ایمیل
mailNickname - mailNickname (نام مستعار تبادلی، نام مستعار) - فقط در ویرایشگر ویژگی نمایش داده می شود
نوع - ObjectClass (کلاس شی (نوع)) - فقط در ویرایشگر ویژگی نمایش داده می شود
proxyAddresses - proxyAddresses (آدرس ایمیل خارجی در رابطه با دامنه در قالب SMTP: [ایمیل محافظت شده]) - فقط در ویرایشگر ویژگی قابل مشاهده است
targetAddress - targetAddress (آدرس ایمیل خارجی در رابطه با دامنه در قالب SMTP: [ایمیل محافظت شده]) - فقط در ویرایشگر ویژگی قابل مشاهده است
برای مثال ستون ها را پر کنید

نام ایمیل نام مستعار پست الکترونیکی تایپ کنید آدرس های پروکسی آدرس هدف
واسیلی ترکین [ایمیل محافظت شده] Partners_Sales_0001 مخاطب SMTP: [ایمیل محافظت شده] SMTP: [ایمیل محافظت شده]

توجه داشته باشید:
mailNickname باید منعکس کننده عضویت در هر گروه پستی باشد و اگر داشته باشد بهتر است شماره سریال. زمانی که همه مخاطبین نام مستعار ایمیلی داشتند و اشکالات ناخوشایند و عجیب بودند، با اشکالاتی مواجه شدم.
آدرس های پروکسی، targetAddress باید در قالب SMTP مشخص شده باشد: [ایمیل محافظت شده]، در غیر این صورت Exchange مخاطب را درک نمی کند و خطای نادرست بودن قالب ایجاد می کند.

2. یک فایل با create_contact و پسوند ps1 بسازیدو کد زیر را در آنجا کپی کنید:

Import-CSV -Path "C:\CSV\contacts_list.csv" | ForEach-Object -process (New-ADObject -Path "OU=PostContact,DC=domain,DC=corp,DC=loc al" -Name $_.Name -Type $_.Type -DisplayName $_.Name -OtherAttributes @ ("Mail"=$_.mail؛ "proxyAddresses"=$_.proxyAddresses؛ "targetAddress"=$_.targetAddress؛ "mailNickname"=$_.mailNickname))

اینجا چه خبره؟ بیایید آن را تکه تکه کنیم:

Import-CSV -Path "C:\CSV\contacts_list.csv"- فرمان داده ها را از فایلی که در مسیر C:\CSV\contacts_list.csv قرار دارد می گیرد.

| ForEach-Object -process (- و داده ها را به خط لوله پردازش منتقل می کند و هر مقدار به طور جداگانه مطابق با نام ستون ها پردازش می شود

New-ADObject- خط لوله خود فرمانی برای ایجاد یک شی در AD است (کمک در powershell با فراخوانی get-help new-adobject - full)

-مسیر "OU=PostContact,DC=Domain,DC=corp,DC=loc al"- مسیری که در امتداد آن ایجاد خواهد شد تماس پستی. می‌توانید با باز کردن AD و کلیک کردن روی ویژگی‌های OU (کانتینر) و مشاهده مسیر در تب Object و انجام مجدد آن مطابق با فرمت مثال، آن را مشاهده کنید. اگر این پارامتر حذف شود، مخاطبین در Users ایجاد می شوند، این مسیر پیش فرض است.

-Name $_.Name -Type $_.Type -DisplayName $_.Name - پارامترهای اجباری (نام و نوع) و نه خیلی اجباری -
DisplayName. آنها باید به عنوان شاهد ایجاد شوند، می توانید از سیریلیک استفاده کنید، می توانید با حروف لاتین. محدودیت طولی وجود دارد، فکر می کنم، دقیقاً به خاطر ندارم - 64 کاراکتر.

-OtherAttributes @("Mail"=$_.mail؛ "proxyAddresses"=$_.proxyAddresses؛ "targetAddress"=$_.targetAddress؛ "mailNickname"=$_.mailNickname))- مهم ترین. آدرس های پستینمی توان به سادگی مانند نام و نوع ارسال کرد. آدرس‌های ایمیل از نوع ویژگی‌های دیگر هستند - ویژگی‌های اضافی، اما می‌توانند از ستون‌های فایل CSV. نیز ارسال شوند. فراموش نکنید که تمام علامت ها و براکت ها را بررسی کنید، در پایان باید 2 براکت وجود داشته باشد.

3. فایل ها را ذخیره کنید و مسیرها را بررسی کنید-C:\CSV - در فایل و در زندگی واقعی)))
4. powershell را روی دامین کنترلر باز کنید (کنترل کننده نباید از نوع ReadOnly باشد!!!)، 2 دستور را به ترتیب اجرا کنید:

Set-ExecutionPolicy نامحدود

دایرکتوری فعال ماژول import

5. C:\CSV\create_contact.ps1 را اجرا کنید
6. ما در حال تماشا هستیم(فراموش نکنید که کنسول را به روز کنید) در OU پست تماسمخاطبین ایمیل جدید

و در نهایت، تعدادی نکته.
- اگر تو داری نسخه کامل powershell، سپس با فراخوانی powershell_ise از آن بسیار باز می شود ویرایشگر راحتاسکریپت هایی با قابلیت اجرا و امکانات دیگر.
- فایل های CSV باید داخل باشند رمزگذاری یونیکد، اگر ANSI داشته باشید، خطایی رخ می دهد.
- می توانید ستون های بسیار بیشتری و در نتیجه ویژگی ها را به یک مخاطب ایمیل اضافه کنید. به عنوان مثال، برخی از Exchange ممکن است به یک ویژگی تماس مانند legacyExchangeDN نیاز داشته باشند. تشخیص آن دشوار نیست - ما یک تماس ایمیلی در AD به صورت دستی ایجاد می کنیم، به این پارامتر در تب "Attribute Editor" نگاه کنید (اگر این برگه وجود ندارد، آن را در کنسول به این صورت روشن کنید: منو View \ Additional Components) . بر این اساس، ستون legacyExchangeDN را به فایل داده اضافه کرده و آن را پر کنید ویرایش شدهمقدار کپی شده از مخاطب جدید ایجاد شده و در اسکریپت بعد از آن "mailNickname"=$_.mailNicknameاضافه کردن
"legacyExchangeDN"=$_.legacyExchangeD N. پرانتز را فراموش نکنید.

بهترین مقالات در این زمینه