উইন্ডোজ 7 ব্যবহারকারী লগইন বার পরিমাপ


8

আমাকে একজন ক্লায়েন্ট দ্বারা মেশিন এবং ব্যবহারকারীদের জন্য গড় লগইন সময় গণনা করতে বলা হয়েছে। আমি এখনও অবধি খুঁজে পেয়েছি যে ইভেন্টটি এমন কিছু বুট লগ করেছে যা এখানে পাওয়া কীগুলির দ্বারা সেট করা প্রান্তিকের চেয়ে বেশি সময় নেয়:

HKLM\Software\Microsoft\Windows\CurrentVersion\Diagnostics\Performance\Boot

তবে কীগুলি লক হয়ে গেছে বলে মনে হচ্ছে যাতে প্রতিটি বুটের লগিং নিশ্চিত করার জন্য আমি তাদের প্রান্তিকাগুলি কম করার জন্য সম্পাদনা করতে পারি না। লগ ইন করা এবং আরও বিস্তারিত তথ্যের সম্ভাব্য ব্যবহারকারীর জানাতে যথেষ্ট লম্বা লগইনের জন্য লগিনের সময়গুলি খুঁজে পাওয়ার জন্য কোনও পদ্ধতি রয়েছে কি না, প্রতিটি লগইনটিতে চালনার জন্য এটি যথেষ্ট পরিমাণে হালকা হওয়াও প্রয়োজন এবং ব্যবহারকারীর নজরে না আসা প্রভাব ফেলতে পারে না ।


"লকড" বলতে কী বোঝ? আপনি মানগুলি পরিবর্তন করার চেষ্টা করলে বার্তাটি কী? আপনার বর্তমান অ্যাকাউন্টের অনুমতিগুলির সীমাবদ্ধতা বা ইউএসি দ্বারা নির্ধারিত বিধিনিষেধকে সরিয়ে দিতে আপনি কি "প্রশাসক হিসাবে" রেজিডিট শুরু করেছিলেন?
দ্য ওয়াববিট

রিজেডিট রানের মাধ্যমে কীটি সম্পাদনা করলে প্রশাসক হিসাবে এই ফলাফলটি পাওয়া যায়, "বুটমিনার টিরেসোল্ডসেল্ড সম্পাদনা করা যায় না: মানটির নতুন বিষয়বস্তু লেখার ক্ষেত্রে ত্রুটি ''
30:55

আপনার এই কীটির মানগুলি পরিবর্তন করার অনুমতি রয়েছে কিনা তা নিশ্চিত করুন । আপনার অ্যান্টিভাইরাস ইঞ্জিন কোনও অকাট্য কারণে রেজিস্ট্রি পরিবর্তনগুলি অবরুদ্ধ করছে না কিনা তাও পরীক্ষা করুন।
দ্য ওয়াববিট

এই মেশিনে বর্তমানে কোনও অ্যান্টিভাইরাস চলছে না কারণ এটি পরীক্ষার জন্য একটি নতুন ইনস্টল। আমি স্থানীয় প্রশাসক হিসাবে চালাচ্ছি। কীগুলিতে অনুমতি চেক করার কোনও উপায় আছে?
শে

3
আপনি কীভাবে "ব্যবহারকারী লগইন সময়" সংজ্ঞায়িত করবেন? ব্যবহারকারীর মধ্যে এই সময়টি তার ব্যবহারকারীর নাম + পাসওয়ার্ড যাচাই করে এবং এক্সপ্লোরার কোনও প্রোগ্রাম চালু করার জন্য প্রস্তুত?
গ্রেগরি মোস্যাট

উত্তর:


4

আমাকে সম্প্রতি খুব অনুরূপ কাজ করতে বলা হয়েছিল তবে বুটআপ এবং লগনের সময় অন্তর্ভুক্ত করতে এবং historicalতিহাসিক উল্লেখের অনুমতি দেওয়ার জন্য আমাকে বলা হয়েছিল। সুতরাং নীচের পাওয়ারশেল লিপিটি নিম্নলিখিতটি করে:

  1. কিছু পরিবেশের ভেরিয়েবল ধরে
  2. 4 টি বিভিন্ন ইভেন্ট লগ এন্ট্রিগুলির জন্য সময়-তারিখের ডাকটিকিট পান। এর দ্বিতীয় এবং চতুর্থটি সঠিক পরিমাপ নয় তবে বেশ বিস্তৃত গবেষণা, সমস্যা সমাধানের এবং পরীক্ষার পরে তারা অতি নিকটে এবং যা আমি দেখেছি তার থেকে সর্বোত্তম বিকল্প।
  3. এই 4 টি ইভেন্টের মধ্যে পার্থক্য গণনা করে
  4. একটি সাধারণ এসকিউএল টেবিলের মধ্যে সমস্ত সংখ্যাকে পপুলেট করে [আপনি যে কোনও কিছুতে অবশ্যই নম্বরগুলিকে পাইপ করতে মানিয়ে নিতে পারেন]

সুতরাং স্ক্রিপ্টটি নির্ধারিত টাস্কের মাধ্যমে বা কোনও সময়সূচীতে চালানো বোঝায় আপনার যদি এসসিসিএম সম্ভবত থাকে (লগনের সময় নয় যাতে লগনটি একেবারে পরিবর্তন না করা)। সুন্দর জিনিসটি হ'ল আপনি নিজের কম্পিউটার থেকে এটি চালানোর জন্য পিসি নামটি অন্য কোনও কিছুর কাছে পরিবর্তন করতে পারবেন এবং সংখ্যার সমস্যা সমাধানের জন্য এবং যাচাই করতে দূরবর্তী কম্পিউটার থেকে ডেটা পেতে (যদিও ব্যবহারকারীর নামটি আপনার নিজের হিসাবে প্রদর্শিত হবে) get

আমি এটিকে অন্য পদক্ষেপ নিয়েছি এবং বাহ্যিক ডেটার (বিসিএস ব্যবহার করে) একটি তালিকা তৈরি করতে শেয়ারপয়েন্ট ব্যবহার করেছি যাতে তাদের সুন্দর ফ্রন্ট এন্ড জিইউআই থাকে। স্ক্রিপ্টের নীচে, আমি লেখার সময় আমি বেশিরভাগ মন্তব্য করা লাইনে রেখেছি:

$USER = $env:username.ToUpper()
$COMPUTER = $env:computername.ToUpper()
$Current_Time = Get-Date
$PCname = ''
$addedtime = 0

#1. get event time of last OS load
$filterXML = @'
<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (Level=4 or Level=0) and (EventID=12)]]</Select>
  </Query>
</QueryList>
'@
$OSLoadTime=(Get-WinEvent -ComputerName $PCname -MaxEvents 1 -FilterXml $filterXML).timecreated
#Write-Host $PCname
#Write-Host "1. Last System Boot @ " $OSLoadTime

#2. Get event time of Time-Service [pre-Ctrl+Alt-Del] after latest OS load
$filterXML = @'
<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Time-Service'] and (Level=4 or Level=0) and (EventID=35)]]</Select>
  </Query>
</QueryList>
'@
$CtrlAltDelTime=(Get-WinEvent -ComputerName $PCname -MaxEvents 1 -FilterXml $filterXML).timecreated
#Write-Host "2. Time-sync after Boot @ " $CtrlAltDelTime
#get minutes (rounded to 1 decimal) between OS load time and 1st load of GPOs
$BootDuration = "{0:N1}" -f ((($CtrlAltDelTime - $OSLoadTime).TotalSeconds + $addedtime)/60)

#3. get event time of 1st successful logon
$filterXML = @'
<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Winlogon'] and (Level=4 or Level=0) and (EventID=7001)]]</Select>
  </Query>
</QueryList>
'@
$LogonDateTime=(Get-WinEvent -ComputerName $PCname -MaxEvents 1 -FilterXml $filterXML -ErrorAction SilentlyContinue).timecreated

If ($LogonDateTime) { 
    #Write-Host "3. Successful Logon @ " $LogonDateTime 
    } 
    Else {
    #Write-Host "Duration of Bootup = " $BootDuration "minutes" -foregroundcolor blue -BackgroundColor white
    #Write-Host $PCname "has not logged back in." -foregroundcolor red -BackgroundColor white
    Exit
    }
#Write-Host "Duration of Bootup = " $BootDuration "minutes" -foregroundcolor blue -BackgroundColor white

#4. Get Win License validated after logon (about same time as explorer loads)
$filterXML = @'
<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[Provider[@Name='Microsoft-Windows-Winlogon'] and (Level=4 or Level=0) and (EventID=4101)]]</Select>
  </Query>
</QueryList>
'@
$DesktopTime=(Get-WinEvent -ComputerName $PCname -MaxEvents 1 -FilterXml $filterXML).timecreated
$LogonDuration = "{0:N1}" -f ((($DesktopTime - $LogonDateTime).TotalSeconds + $addedtime)/60)
#Write-Host "4. WinLicVal after Logon @ " $DesktopTime
#Write-Host "Duration of Logon = " $LogonDuration "minutes" -foregroundcolor blue -BackgroundColor white

#START SQL Injection Section
[void][reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")

$sqlServer = "SQLserver01"
$dbName = "BootUpTimes"
$tbl = "tblBootUpTimes"
#$srv = New-Object Microsoft.SqlServer.Management.Smo.Server $sqlServer
#$db = $srv.databases[$dbName]
#$conn = New-Object System.Data.SqlClient.SqlConnection("Data Source=$sqlServer;Initial Catalog=$dbName; Integrated Security=SSPI")
$conn = New-Object System.Data.SqlClient.SqlConnection("server=$sqlServer;database=$dbName;Password=plaintext;User Id=BootUpTimes")
$conn.Open()
$cmd = $conn.CreateCommand()
$cmd.CommandText = "INSERT INTO $tbl VALUES ('$Current_Time','$USER','$COMPUTER','$OSLoadTime','$CtrlAltDelTime','$BootDuration','$LogonDateTime','$DesktopTime','$LogonDuration')"
Try
{
$null = $cmd.ExecuteNonQuery()
}
Catch
{
}
$conn.Close()

এই শেষ এসকিউএল বিভাগে একটি প্লেইন টেক্সটে কিছু পাসওয়ার্ডের প্রয়োজন ছাড়াই এসকিউএল এ ইনপুট দেওয়ার জন্য অন্য পদ্ধতি (সুরক্ষা-ভিত্তিক) অফার করার জন্য কয়েকটি লাইনের মন্তব্য রয়েছে।


বুটের পরে টাইম-সিঙ্কটি ঘটছে বলে মনে হয় না। আমি আমার পরীক্ষার মেশিনটি রিবুট করে স্ক্রিপ্টটি চালিয়েছি। আমি আমার বুটের সময়কালের জন্য -4,657.9 মিনিট পেয়েছি। সময়-সিঙ্কের কারণে ২ দিন আগে তারিখ।
ডেকাড

আমার ধারণা আমার ডোমেন নীতিগুলি আলাদাভাবে সেটআপ হয়েছে। আমরা "সর্বদা নেটওয়ার্কের জন্য অপেক্ষা করি .." চালু আছে, এর কারণ হতে পারে। এছাড়াও, যদি আপনার কেবলমাত্র সময়কাল লগের প্রয়োজন হয় আপনি সেই বুট-আপ অংশগুলি মন্তব্য করতে পারেন
জর্ডান ডাব্লু।

এই স্ক্রিপ্টটি কেবলমাত্র প্রমাণীকরণ লগইন করে না
জিম বি

3

আমি নিশ্চিত না যে কেন কেউ মনে করে যে কোনও স্ক্রিপ্ট আপনাকে লগনের সময় নির্ধারণে সহায়তা করবে (সর্বোপরি কেউ লগ-ইন না করা পর্যন্ত আপনি স্ক্রিপ্টটি চালাতে পারবেন না এবং সময় বয়ে যাওয়ার ফলে অবশ্যই ক্ষতিগ্রস্থ হওয়ার কারণ হবে না - যার মধ্যেও প্রারম্ভিক প্রক্রিয়াজাতকরণ না হওয়া পর্যন্ত স্থির করা হবে না I'd আমি আপনাকে যে সরঞ্জামটি ব্যবহার করতে চাইছি তা হ'ল পারফরম্যান্স টুলকিট থেকে এক্সপারফ সরঞ্জাম total আপনি মোট লগন সময়ের জন্য এক্সপ্লোরিট সময়টি দেখতে চান Windows বিস্তারিত উইন্ডোজ উইন্ডোজ অন / অফ ট্রানজিশন পারফরম্যান্স বিশ্লেষণ দেখুন বুট থেকে ডেস্কটপে যা ঘটে। উপযুক্ত স্থানগুলি থেকে এক্স্পের্ফ এবং এক্সবুটমগ্রার পেতে উইন্ডোজ পারফরম্যান্স অ্যানালাইসিস সরঞ্জামগুলি দেখুন ।


আমি কিছুক্ষন পিছনে এক্সপারফে intoুকলাম। তবে আমার অনুভূতি ছিল যে এটি একটি ডিবাগিং সরঞ্জামের চেয়ে বেশি? প্রতিটি বুট এবং প্রতিটি লগইনের জন্য এটি চালানো যেতে পারে?
ডেকাড

এটি পারে, তবে আপনাকে কেন প্রতিটি বুট এবং প্রতিটি লগইন পরিমাপ করতে হবে?
জিম বি

কিছু ব্যবহারকারীর লগইন সময় সম্পর্কে অভিযোগ আছে, কেউ যখন এ বিষয়ে অভিযোগ করেন তারা সত্যের সাথে সশস্ত্র হতে চান। এখন পর্যন্ত তাদের ব্যাক আপ করার কোনও তথ্য নেই। সুতরাং তারা ব্যবহারকারীদের এবং মেশিনগুলির জন্য লগইন বার প্রদর্শন এবং নিরীক্ষণ করতে সক্ষম হতে চায়। আইই মেশিন 10001 - গড় লগইন সময় 10 সেকেন্ড। ব্যবহারকারী জো ব্লগের গড় লগইন সময় 8 সেকেন্ড। যথেষ্ট পরিমাণে গড়পড়তা গড়ে গড়ে তুলতে পর্যাপ্ত ডেটা পাওয়ার জন্য এটি কেবল দীর্ঘ সময়ের জন্য চালানো দরকার।
Decad

যদি আপনার মাঝে মাঝে মাঝে সমস্যা হয়, তবে গড় আপনাকে সহায়তা করবে না। যখন কোনও ব্যবহারকারী প্রথম জিনিসটি দেখার জন্য অভিযোগ করে তা হ'ল গ্রুপ পলিসি প্রসেসিং লগগুলি রয়েছে এবং দেখুন কোনও সমস্যা আছে কিনা তা দেখুন (এটির স্ক্রিপ্টের সময়ে 99%)। এর পরে আমি সরঞ্জামটি ইনস্টল করব, পুনরায় বুট করব এবং তাদের আবার লগইন করব।
জিম বি

আপনি যেমন পরামর্শ দিচ্ছেন একইভাবে আমরা আন্তঃবিরাম মামলাগুলি সমাধান করি এবং এটি সাধারণত একটি স্ক্রিপ্ট। তবে তারা ব্যবহারকারীদের কাছে এই চিত্রগুলি প্রদর্শন করতে সক্ষম হতে চায় যে লগইন সময়গুলি বর্তমানে যে খ্যাতি রয়েছে তার থেকে ততটা খারাপ নয়।
Decad

2

/superuser/250267/how-to-diagnose-slow-booting-or-logon-in-windows-7

এই থ্রেডটিতে উইন্ডোজ পারফরম্যান্স অ্যানালাইসিস সরঞ্জাম ব্যবহার করে বুট ডায়াগের "মাইক্রোসফ্ট" উপায় দেখানো হয়েছে

"চালু / বন্ধ ট্রানজিশন পারফরম্যান্স" ওরফে উইন্ডোজ চালু বা বন্ধ করার বিষয়ে মাইক্রোসফ্টের থেকে খুব ভাল নথিভুক্ত পদ্ধতি: http://msdn.microsoft.com/en-us/windows/hardware/gg463386.aspx

এই অফিশিয়াল সরঞ্জামগুলি ব্যবহার করে, আপনি আপনার ক্লায়েন্টকে একটি অনুমোদিত উত্তর সরবরাহ করতে পারেন। আমার মতে, স্ক্রিপ্টিং ব্যবহার করার চেষ্টা করার চেয়েও উচ্চতর। আপনার প্রয়োজনগুলি মৌলিক হলে কিছুটা ওভারকিল হতে পারে।

এছাড়াও এই থ্রেড থেকে সলুটো ওয়েবসাইট মিস করবেন না যদি আপনার প্রয়োজনীয়তা অত্যন্ত প্রাথমিক হয় :)


2

লগন স্ক্রিপ্ট হিসাবে সম্পাদিত নিম্নলিখিত ব্যাচ ফাইলটি আপনাকে শেল প্রমাণীকরণ হতে প্রস্তুত হতে কত সময় নেয় তা বলার দিকে কিছুটা এগিয়ে যাবে।

set logfile=\\server\share\%computername%-%username%.log
net user /domain %username% | find /I "Last logon" > %logfile%
net time %logonserver% >> %logfile%

আমি এটি পরীক্ষা করিনি, এবং আমি কয়েকটি অনুমান করেছি।

  1. net userডিসি প্রমাণীকরণটি সম্পাদন করার সময়টি লগনের সময় দিয়ে আসে । আমি বিশ্বাস করি এটিই কেস, তবে এটির ব্যাক আপ করার জন্য কোনও কংক্রিটের সন্ধান পাই না।
  2. লগন স্ক্রিপ্টটি ব্যবহারকারীর শেল লোড হওয়ার সাথে সাথে চলে। এটি অবশ্যই ক্ষেত্রে যদি আপনি গ্রামীণ নীতি দ্বারা নির্ধারিত লগন স্ক্রিপ্টগুলির বিরোধিতা হিসাবে পুরানো লেগ্যাসি এনটি 4 লগন স্ক্রিপ্টগুলি ব্যবহার করেন তবে জিপিও লগন স্ক্রিপ্টগুলি ব্যবহারকারীর কাছ থেকে লুকানো রয়েছে (ডিফল্টরূপে), আমি কখনই সময় দেখিনি তারা মৃত্যুদণ্ড কার্যকর করা হয়
  3. আপনার ব্যবহারকারীর নামগুলিতে ফাঁকা স্থান নেই, যদি %username%এমনটি হয় তবে আপনার উদ্ধৃতি দিতে হবে।
  4. আপনার কাছে একটি বিশ্ব লিখনযোগ্য শেয়ার রয়েছে যেখানে ডেটা লগ হবে ( \\server\shareউপরের উদাহরণে)। আপনি স্থানীয় মেশিনে এটি স্থানীয়ভাবে লগ করতে পারেন, তবে ফলাফলগুলি পরীক্ষা করা এটি আরও কঠিন করে তুলবে।

সম্পাদনা:

জিমের সাথে সম্পর্কযুক্ত সময়স্রোতের মোকাবিলার জন্য আমি স্ক্রিপ্টটি আপডেট করেছি। net useকমান্ড থেকে লগন শুরুর সময়টি অনুমোদনযোগ্য ডোমেন নিয়ামকের ঘড়ি থেকে নেওয়া হয়। net timeকমান্ড এখন একই সার্ভার থেকে সময় লাগে।


ব্যবহারকারী জিপিওগুলি লগইন করার পরে তবে লগইনস্ক্রিপ্ট কার্যকর করার আগে প্রয়োগ করা হয়। এই সময় অনুপস্থিত হবে।
টম

আমি যদি এই ব্যাচের ফাইলটি মেশিনগুলি স্টার্টআপে রাখি, তবে এটি আমার মনে হয় আরও একটি গ্রহণযোগ্য পাঠ্য দেবে?
ডেকাড

@ ডেকাড আমি একটি বিকল্প হিসাবে পরামর্শ দিতে যাচ্ছিলাম, তবে মনে করলাম লগন স্ক্রিপ্ট ব্যবহার করে স্ক্রিপ্টটি স্থাপন করা আরও সহজ হবে। ব্যক্তিগতভাবে আমি এটিকে লিগ্যাসি লগন স্ক্রিপ্ট হিসাবে স্থাপন করব। অর্থাত্ ProfileADU এবং C এর ব্যবহারকারী অ্যাকাউন্ট সম্পত্তি সংলাপের ট্যাবের মাধ্যমে । এটি স্পষ্টতই এক্সপ্লোরার শেল লোড হিসাবে চালিত হয়।
ব্রায়ান

আমি মনে করি স্ক্রিপ্টগুলি এক্সপ্লোরিনেট চলাকালীন চলবে (যে কারণে লগইন স্ক্রিপ্টগুলি লগইনগুলি ধীর করে দেয়)
জিম বি

@ ডেকাড আমি সময় প্রবাহের যে কোনও সম্ভাবনা দূর করতে স্ক্রিপ্টটি আপডেট করেছি।
ব্রায়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.