আপনি উইন্ডোজ পরিবেশে বর্তমান ব্যবহারকারীকে কীভাবে খুঁজে পাবেন?


159

কমান্ড-লাইন স্ক্রিপ্ট চলাকালীন, বর্তমান ব্যবহারকারীর নাম পাওয়া সম্ভব?



@ পিটারমোরটেনসেন, আমি মনে করি না যে থ্রেড এটির সাথে খুব জড়িত। এর মধ্যে একটি .NET এবং অন্যটি সেমিডি এপিআই ব্যবহার করা সম্পর্কে । তারা উভয়ই একই তথ্য চান এই ব্যতীত, অবশ্যই অন্যান্য
অনেকগুলি

উত্তর:


202

আপনি ব্যবহারকারীর নাম ভেরিয়েবল ব্যবহার করতে পারেন: %USERNAME%


90

ব্যবহারকারীর নাম:

echo %USERNAME%

ডোমেন নাম:

echo %USERDOMAIN%

setকমান্ড প্রম্পট থেকে কমান্ড চালিয়ে আপনি পরিবেশগত ভেরিয়েবলের একটি সম্পূর্ণ তালিকা পেতে পারেন ।


সমস্ত পরিবেশের ভেরিয়েবলের সাথে অতিরিক্ত তথ্য এটিকে একটি দুর্দান্ত বর্ধিত উত্তর করে।
bবলldave025

63

কমান্ড প্রম্পটে এই কমান্ডটি ব্যবহার করুন

C:\> whoami

এটি একটি ভাল উত্তর, কিন্তু কিছু সতর্কতা আছে। আমি প্রবেশ করি whoami, আমি পেতে desktop-machine\bballdave025। দুটি অংশ রয়েছে, এর মাধ্যমে দেখা হয়েছে: 1) echo %USERNAME%, ফলাফল bballdave025; 2) echo %USERDOMAIN%, ফলাফল DESKTOP-MACHINE। আমি অনুমান করি যে কেউ বলতে পারেন যে 'সম্পূর্ণ ব্যবহারকারীর নাম' উপলব্ধ echo %USERDOMAIN%\%USERNAME%(এই ফলাফলটি DESKTOP-MACHINE\bballdave025, এর সাথে মেলে whoami, ক্ষেত্রে উপেক্ষা করে), এমনকি echo %USERNAME%@%USERDOMAIN%ফলাফলের মাধ্যমে bballdave025@DESKTOP-MACHINEএটি সমস্ত ব্যবহারকারীর (আমাদের জন্য, ওপি) প্রয়োজনের উপর নির্ভর করে , যদি ডোমেন অংশটি গুরুত্বপূর্ণ হয়।
bবলldave025

46

এটা থাকা উচিত %USERNAME%। অবশ্যই এটি সহজেই ছদ্মবেশী হতে পারে, তাই সুরক্ষার জন্য এটির উপর নির্ভর করবেন না।

দরকারী টিপ: setএকটি কমান্ড প্রম্পট টাইপ করুন সমস্ত পরিবেশের ভেরিয়েবল তালিকাভুক্ত।


2
আপনার 'নেট কনফিগারেশন ওয়ার্কস্টেশন | "ব্যবহারকারীর নাম" মন্তব্যটি খুব দরকারী find এটি কেবল একটি মন্তব্যের পরিবর্তে উত্তর হওয়া উচিত ছিল
আলপে

17

%USERNAME% ব্যাচ এবং উইন্ডোজ পরিবেশে অন্যান্য সঠিক উত্তর।

আর একটি বিকল্প %USERPROFILE%ব্যবহারকারীর পথ পেতে যেমন ব্যবহার করা হয় C:\Users\username


6

উত্তরটি নির্ভর করে আপনি কোন "কমান্ড-লাইন স্ক্রিপ্ট" ভাষায় আছেন।

cmd

পুরানো cmd.exeকমান্ড প্রম্পটে বা একটি .batবা .cmdস্ক্রিপ্টে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

%USERNAME% - কেবল ব্যবহারকারীর নাম পান।

%USERDOMAIN% - ব্যবহারকারীর ডোমেন পায়।

শক্তির উৎস

পাওয়ারশেল কমান্ড প্রম্পট বা একটি .ps1বা .psm1স্ক্রিপ্টে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

[System.Security.Principal.WindowsIdentity]::GetCurrent().Name- আপনাকে পুরোপুরি যোগ্যতাসম্পন্ন ব্যবহারকারীর নাম দেয় (যেমন ডোমেন \ ব্যবহারকারীর নাম)। এটিও সবচেয়ে সুরক্ষিত পদ্ধতি কারণ এটি $Envনীচের অন্যান্য ভেরিয়েবলগুলির মতো ব্যবহারকারীর দ্বারা ওভাররাইড করা যায় না ।

$Env:Username - কেবল ব্যবহারকারীর নাম পান।

$Env:UserDomain - ব্যবহারকারীর ডোমেন পায়।

$Env:ComputerName - কম্পিউটারের নাম পেয়ে যায়।


এটি একটি দুর্দান্ত উত্তর কারণ এই প্রশ্নটি 'শেল' নির্ভর। উইন্ডোজ দিয়ে আপনি ব্যবহার করতে পারেন এমন অনেকগুলি শেল রয়েছে। শুধু সিএমডি নয়। আজকাল বেশিরভাগ লোকেরা পাওয়ারশেলে চলে গেছে এবং সেখানে অন্যরা রয়েছেন। stackoverflow.com/questions/17349022/...
G_Style

5

% USERNAME% আপনাকে বর্তমানে চলমান প্রক্রিয়াটির ব্যবহারকারীর নামটি পাবে। আপনি কীভাবে আপনার ব্যাচের ফাইলটি চালাচ্ছেন তার উপর নির্ভর করে এটি বর্তমান ব্যবহারকারীর নামের মতো হবে না। উদাহরণস্বরূপ, আপনি কোনও ব্যাবস্থা ফাইল একটি নির্ধারিত টাস্কের মাধ্যমে কোনও পরিষেবা ইত্যাদি থেকে চালাচ্ছেন might

এক্সপ্লোরার.এক্স.ই.এস. টাস্কটি শুরু করা ব্যবহারকারীর নাম স্ক্র্যাপ করে বর্তমানে লগ-ইন করা ব্যবহারকারীর নাম ব্যবহারের আরও নিশ্চিত উপায় এখানে:

for /f "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do if /i "%%a %%b"=="User Name:" set _currdomain_user=%%c
for /f "TOKENS=1,2 DELIMS=\" %%a in ("%_currdomain_user%") do set _currdomain=%%a & set _curruser=%%b

4

আমি পরীক্ষার জন্য ব্যাচ ফাইলগুলি লেখার ক্ষেত্রে এই পদ্ধতিটি ব্যবহার করি।

echo %userdomain%\%username%

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

এই কেউ সাহায্য করে আউট আশা করি।


4

এটা সবসময় আমার বিরক্ত হচ্ছে কিভাবে উইন্ডোজ যেমন ইউনিক্স এর আরো উপযোগী সামান্য স্ক্রিপ্টিং ইউটিলিটিগুলি, কিছু নেই যারা / whoami , sed এবং awk । যাইহোক, আপনি যদি কিছু নির্বোধ চান, ভিজ্যুয়াল স্টুডিও এক্সপ্রেস পান এবং নিম্নলিখিতগুলি সংকলন করুন:

#include <windows.h>
#include <stdio.h>

int main(int argc, char **argv) {
    printf("%s", GetUserName());
}

এবং এটি আপনার ব্যাচের ফাইলটিতে ব্যবহার করুন।


হ্যাঁ, বিল্ট-ইন থাকলে ভাল লাগত।
জিও

8
আমি সম্মতি দিচ্ছি যে সেড ও অজক কার্যকর হবে, তবে এটি আপনাকে সেখানে 50% পথ দেয়: net config Workstation | find "User name"
the_mandrill

9
whoamiউইন্ডোজ ভিস্তার সাথে শুরু করে পাওয়া যায়।
জোয়

2
সত্য, হোসামি ইউটিলিটি ভিস্তার সাথে অন্তর্ভুক্ত রয়েছে। এক্সপির জন্য, এটি এসপি 2 সমর্থন সরঞ্জামগুলিতে এবং ডাব্লু টু কে এর জন্য, এটি রিসোর্স টুলকিটে রয়েছে।
রিয়েলহোটো

4

বেশিরভাগ ক্ষেত্রে,% USERNAME% ভেরিয়েবলটি আপনি যা চান তা হ'ল।

echo %USERNAME%

তবে, আপনি যদি একটি উন্নত সেমিডি শেল চালাচ্ছেন, তবে% USERNAME% আপনার নিজের ব্যবহারকারীর নামের পরিবর্তে প্রশাসকের নামের প্রতিবেদন করবে। যদি আপনি পরবর্তীটি জানতে চান তবে চালান:

for /f "tokens=2" %u in ('query session ^| findstr /R "^>"') do @echo %u

1

এটি ব্যবহারকারীর নাম ভেরিয়েবল এবং হোয়ামি কমান্ডের মধ্যে প্রধান পার্থক্য:

C:\Users\user.name>echo %username%
user.name

C:\Users\user.name>whoami
domain\user.name

DOMAIN = bios name of the domain (not fqdn)

0

একটি প্রমিত প্রসঙ্গে, প্রতিটি সংযুক্ত ব্যবহারকারী একটি এক্সপ্লোরার এক্সেক্স প্রক্রিয়া ধারণ করে: কমান্ড [টাস্কলিস্ট / ভি | "এক্সপ্লোরার" সন্ধান করে] একটি এক্সপ্লোরার এক্সেক্স প্রসেসের মালিক ধারণ করে এমন একটি রেখা ফেরায়, একটি অভিযোজিত রেজেক্স সহ প্রয়োজনীয় প্রাপ্তি সম্ভব মান। এটি উইন্ডোজ 7 এর অধীনেও পুরোপুরি চলে।

বিরল ক্ষেত্রে এক্সপ্লোরার.এক্সএইকে অন্য কোনও প্রোগ্রাম দ্বারা প্রতিস্থাপন করা হয়, এই ফিল্ডটি মিলানোর জন্য অনুসন্ধান ফিল্টারটি মানিয়ে নেওয়া যেতে পারে। কমান্ডটি যদি খালি লাইন ফেরত দেয় তবে সম্ভবত কোনও ব্যবহারকারী লগইন না হওয়ার সম্ভাবনা রয়েছে। উইন্ডোজ 7 এর মাধ্যমে [ক্যোয়ারী সেশন | সন্ধান করুন ">"] চালানোও সম্ভব।


0

যতদূর ব্লুবিয়ারের প্রতিক্রিয়াটি সর্বাধিক সন্ধান করুন (যদিও আমি আমার ব্যাচের স্ক্রিপ্টটি উদাহরণ সহ চালাচ্ছি। সিস্টেমের অধিকারগুলি) আমাকে এতে কিছু যুক্ত করতে হবে। কারণ আমার উইন্ডোজ ভাষার সংস্করণে (পোলিশ) লাইনটিতে "%% a %% বি" == "ব্যবহারকারীর নাম:" ক্যাচ করা উচিত সত্যই সংঘবদ্ধ হয় (এতে আমার ভাষায় কিছু ডায়রিট্রিক অক্ষর রয়েছে) আমি প্রথম lines টি লাইন এড়িয়ে চলেছি এবং 8 ই কাজ করে।

@for /f "SKIP= 7 TOKENS=3,4 DELIMS=\ " %%G in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do @IF %%G==%COMPUTERNAME% set _currdomain_user=%%H
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.