ویندوز: ببینید چه کسی در کجا وارد شده است

ویندوز: ببینید چه کسی در کجا وارد شده است
- اوه، هیچ چیز برای من کار نمی کند، کمک!
- نگران نباش، ما الان همه چیز را درست می کنیم. اسم کامپیوترت رو بزار...
(کلاسیک ژانر از تماس گرفته تا پشتیبانی فنی)

اگر ابزاری برای BgInfo دارید یا کاربرانتان از میانبر Windows+Pause/Break اطلاع داشته باشند و بدانند چگونه آن را فشار دهند، خوب است. حتی نمونه های نادری هستند که توانسته اند نام خودروی خود را یاد بگیرند. اما اغلب، علاوه بر مشکل اصلی خود، تماس گیرنده یک مشکل دوم نیز دارد: پیدا کردن نام/آدرس IP کامپیوتر. و اغلب برای حل این مشکل دوم زمان بسیار بیشتری نسبت به مشکل اول طول می کشد (و شما فقط باید تصویر زمینه را تغییر دهید یا میانبر گم شده را برگردانید :).
اما شنیدن چیزی مانند این بسیار زیباتر است:
- تاتیانا سرگیونا، نگران نباشید، من از قبل در حال اتصال هستم ...


و برای این به چیز زیادی نیاز ندارید.
یک متخصص پشتیبانی فنی فقط باید نام ماشین ها را به خاطر بسپارد و به یاد بیاورد که چه کسی برای چه کسی کار می کند.
قبل از تشریح راه حلی که در حال حاضر از آن استفاده می کنیم، به طور مختصر به گزینه های دیگر نگاه می کنم تا بتوانم آنها را تا حد امکان مورد انتقاد قرار دهم و انتخاب خود را توضیح دهم.

  1. BgInfo, اطلاعات دسکتاپ و مانند آن اگر پول زیاد باشد، پولی هم وجود دارد. نکته این است که اطلاعات فنی روی دسکتاپ نمایش داده می شود: نام دستگاه، آدرس IP، ورود به سیستم و غیره. در Desktop Info حتی می توانید نمودارهای عملکرد را روی نیمی از صفحه نمایش فشار دهید.
    چیزی که من دوست ندارم این است که برای مثال Bginfo، کاربر باید ویندوز را کوچک کند تا داده های لازم را ببیند. من و همکارانم نیز بیش از یک بار در BgInfo مشاهده کرده ایم مصنوع مشخصه، زمانی که متن جدید در بالای متن قدیمی نمایش داده می شود.
    برخی از کاربران از این موضوع که ادمین ها روی صورت گربه ای که روی دسکتاپ کشیده شده یک عدد ترسناک 192.168.0.123 ترسیم می کنند و زیبایی تصویر پس زمینه را خراب می کند، آزرده خاطر می شوند و البته این به طرز وحشتناکی بی انگیزه است و روحیه کار را کاملاً از بین می برد. .
  2. یک برچسب "من کی هستم" (سعی نکنید در پایان علامت سوال به آن اضافه کنید :). یک میانبر کلاسیک روی دسکتاپ که پشت آن یک اسکریپت منظم یا نه چندان منظم پنهان شده است که اطلاعات لازم را در قالب یک کادر محاوره ای نمایش می دهد. گاهی اوقات به جای میانبر، خود اسکریپت را روی دسکتاپ می گذارند که IMHO رفتار بدی دارد.
    نقطه ضعف این است که برای راه اندازی میانبر، مانند مورد اول، باید تمام پنجره های باز را به حداقل برسانید (ما آن دسته از عزیزان خوش شانسی را که تنها پنجره بازی یک نفره را روی دستگاه کار خود باز دارند، در نظر نمی گیریم). به هر حال، آیا کاربران شما می‌دانند که برای کوچک کردن تمام پنجره‌ها کجا کلیک کنند؟ درست است، یک انگشت در چشم مدیر.

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

من روحم را بیرون ریختم و حالا سر اصل مطلب.
ایده یک ساکن خابروف به عنوان مبنایی در نظر گرفته شد mittel از از این مقاله.
ماهیت ایده این است که وقتی کاربر وارد ویندوز می شود، اسکریپت ورود اطلاعات لازم (زمان و نام ماشین) را در یک ویژگی خاص از حساب کاربری وارد می کند. و هنگامی که از سیستم خارج می شوید، یک اسکریپت logoff مشابه اجرا می شود.

من خود ایده را دوست داشتم، اما مواردی وجود داشت که در اجرا از آنها راضی نبودم.

  1. خط مشی گروه، که اسکریپت های ورود و خروج را برای کاربران مشخص می کند، برای کل دامنه اعمال می شود، بنابراین اسکریپت ها در هر ماشینی که کاربران وارد آن می شوند اجرا می شوند. اگر از راه حل های ترمینال همراه با ایستگاه های کاری (به عنوان مثال، محصولات مایکروسافت RDS یا Citrix) استفاده می کنید، این رویکرد ناخوشایند خواهد بود.
  2. داده ها در ویژگی بخش حساب کاربری وارد می شوند که کاربر معمولی به آن دسترسی فقط خواندنی دارد. علاوه بر ویژگی حساب کاربری، اسکریپت تغییراتی را در ویژگی Department حساب رایانه نیز ایجاد می کند که به طور پیش فرض کاربران نیز نمی توانند آن را تغییر دهند. بنابراین، برای اینکه راه حل کار کند، نویسنده پیشنهاد می کند استانداردهای تنظیمات امنیتی برای اشیاء AD را تغییر دهید.
  3. قالب تاریخ به تنظیمات بومی سازی در دستگاه مورد نظر بستگی دارد، بنابراین از یک دستگاه می توانیم 10 نوامبر 2018 ساعت 14:53 و از دستگاه دیگر 11/10/18 2:53 بعد از ظهر دریافت کنیم.

برای رفع این نواقص موارد زیر انجام شد.

  1. GPO نه به یک دامنه، بلکه به یک OU با ماشین‌ها مرتبط است (من کاربران و ماشین‌ها را به OU‌های مختلف جدا می‌کنم و به دیگران توصیه می‌کنم). علاوه بر این، برای حالت پردازش خط مشی حلقه بک حالت تنظیم شده است ادغام کردن.
  2. اسکریپت فقط داده ها را در حساب کاربری در ویژگی می نویسد اطلاعات، که کاربر می تواند به طور مستقل برای حساب خود تغییر دهد.
  3. قطعه کدی که مقدار مشخصه را ایجاد می کند تغییر داد

حالا اسکریپت ها به این شکل هستند:
SaveLogonInfoToAdUserAttrib.vbs

On Error Resume Next
Set wshShell = CreateObject("WScript.Shell")
strComputerName = wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
Set adsinfo = CreateObject("ADSystemInfo")
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
strMonth = Month(Now())
If Len(strMonth) < 2 then
  strMonth = "0" & strMonth
End If
strDay = Day(Now())
If Len(strDay) < 2 then
  strDay = "0" & strDay
End If
strTime = FormatDateTime(Now(),vbLongTime)
If Len(strTime) < 8 then
  strTime = "0" & strTime
End If
strTimeStamp = Year(Now()) & "/" & strMonth & "/" & strDay & " " & strTime
oUser.put "info", strTimeStamp & " <logon>" & " @ " & strComputerName
oUser.Setinfo

SaveLogoffInfoToAdUserAttrib.vbs

On Error Resume Next
Set wshShell = CreateObject("WScript.Shell")
strComputerName = wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
Set adsinfo = CreateObject("ADSystemInfo")
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
strMonth = Month(Now())
If Len(strMonth) < 2 then
  strMonth = "0" & strMonth
End If
strDay = Day(Now())
If Len(strDay) < 2 then
  strDay = "0" & strDay
End If
strTime = FormatDateTime(Now(),vbLongTime)
If Len(strTime) < 8 then
  strTime = "0" & strTime
End If
strTimeStamp = Year(Now()) & "/" & strMonth & "/" & strDay & " " & strTime
oUser.put "info", strTimeStamp & " <logoff>" & " @ " & strComputerName
oUser.Setinfo

هر کسی که اولین کسی باشد که تمام تفاوت‌های بین اسکریپت‌های Logon و Logoff را پیدا کند، یک امتیاز مثبت برای کارما دریافت می‌کند. 🙂
همچنین برای به دست آوردن اطلاعات بصری، اسکریپت PS کوچک زیر ایجاد شد:
Get-UsersByPCsInfo.ps1

$OU = "OU=MyUsers,DC=mydomain,DC=com"
Get-ADUser -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

در کل، همه چیز یک-دو-سه پیکربندی شده است:

  1. یک GPO با تنظیمات لازم ایجاد کنید و آن را به بخش با ایستگاه های کاری کاربر پیوند دهید:
    ویندوز: ببینید چه کسی در کجا وارد شده است
  2. بیایید بریم چای بخوریم (اگر AD تعداد کاربران زیادی داشته باشد، پس به چای زیادی نیاز دارید :)
  3. اسکریپت PS را اجرا کنید و نتیجه را بگیرید:
    ویندوز: ببینید چه کسی در کجا وارد شده است
    در بالای پنجره یک فیلتر مناسب وجود دارد که در آن می توانید داده ها را بر اساس مقادیر یک یا چند فیلد انتخاب کنید. با کلیک بر روی ستون های جدول، رکوردها بر اساس مقادیر فیلدهای مربوطه مرتب می شوند.

ما می توانیم راه حل خود را به زیبایی "بسته بندی" کنیم.
ویندوز: ببینید چه کسی در کجا وارد شده است
برای انجام این کار، یک میانبر برای راه‌اندازی اسکریپت برای متخصصان پشتیبانی فنی اضافه می‌کنیم که چیزی شبیه به این را در فیلد «شی» خواهند داشت:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

اگر تعداد زیادی کارمند پشتیبانی فنی وجود دارد، می توانید یک میانبر را با استفاده از آن توزیع کنید این مهم نیست.

چند نظر پایانی

  • ماژول Active Directory برای PowerShell باید روی دستگاهی که اسکریپت PS از آن راه اندازی می شود نصب شود (برای انجام این کار، فقط ابزارهای مدیریت AD را در اجزای ویندوز اضافه کنید).
  • به طور پیش فرض، کاربر نمی تواند اکثر ویژگی های حساب خود را ویرایش کند. اگر تصمیم دارید از ویژگی دیگری استفاده کنید این را در نظر داشته باشید اطلاعات.
  • به همه همکاران درگیر اطلاع دهید که از کدام ویژگی استفاده خواهید کرد. مثلا همینطور اطلاعات برای افزودن تعاملی یادداشت‌ها به صندوق پستی کاربر در پنل مدیریت Exchange Server استفاده می‌شود و شخصی می‌تواند به راحتی آن را بازنویسی کند، یا وقتی اطلاعاتی که اضافه کرده توسط اسکریپت شما بازنویسی می‌شود ناراحت شود.
  • اگر چندین سایت اکتیو دایرکتوری دارید، پس از تأخیر در تکرار استفاده کنید. به عنوان مثال، اگر می خواهید اطلاعات به روزی در مورد کاربران از سایت AD A دریافت کنید و اسکریپت را از یک ماشین از سایت AD B اجرا کنید، می توانید این کار را انجام دهید:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCfromSiteA - نام کنترل کننده دامنه سایت A (به طور پیش فرض، cmdlet Get-AdUser به نزدیکترین کنترل کننده دامنه متصل می شود)

ویندوز: ببینید چه کسی در کجا وارد شده است

منبع تصویر

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

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

از چه چیز استفاده میکنی؟

  • bginfo، اطلاعات دسکتاپ و غیره (نرم افزار رایگان)

  • آنالوگ های پولی bginfo

  • من آن را مانند مقاله انجام خواهم داد

  • مرتبط نیست، زیرا من از VDI/RDS و غیره استفاده می کنم.

  • من هنوز از چیزی استفاده نمی کنم، اما در مورد آن فکر می کنم

  • من نیازی به جمع آوری چنین داده هایی ندارم

  • دیگر (در نظرات به اشتراک بگذارید)

112 کاربر رای دادند. 39 کاربر رای ممتنع دادند.

منبع: www.habr.com

اضافه کردن نظر