আমি কীভাবে কমান্ড লাইন থেকে সেশন আইডি পুনরুদ্ধার করতে পারি?


26

আমি কীভাবে উইন্ডোজ কমান্ড লাইনের মাধ্যমে বর্তমান ব্যবহারকারীর সেশন আইডিটি পুনরুদ্ধার করতে পারি?

ব্যবহারকারীদের ট্যাবের অধীনে টাস্কলিস্টে প্রতিটি ব্যবহারকারী একটি সেশন আইডির সাথে যুক্ত। আমি কমান্ড লাইনের মাধ্যমে এটি পুনরুদ্ধার করতে চাই যাতে আমি এটি কোনও দূরবর্তী অ্যাপ্লিকেশনের জন্য ব্যবহার করতে পারি।


আমি নিশ্চিত না যে আপনি সেশন আইডি বলতে কী বোঝাতে চাইছেন?
ইবিগ্রিন

ব্যবহারকারীদের ট্যাবের অধীনে টাস্কলিস্টে প্রতিটি ব্যবহারকারী একটি সেশন আইডির সাথে যুক্ত। আমি কমান্ড লাইনের মাধ্যমে এটি পুনরুদ্ধার করতে চাই যাতে আমি এটি কোনও দূরবর্তী অ্যাপ্লিকেশনের জন্য ব্যবহার করতে পারি।
নেতিবাচক


আপনি যদি একটি ব্যাচ থেকে কল করেন তবে %% G হবে, কমান্ড লাইন থেকে সরাসরি% G

উত্তর:


28

এটি অবশ্যই সবচেয়ে কার্যকর উপায় নয়, তবে আপনি এর ফলাফলগুলি একবার দেখুন tasklist। এটি চলমান প্রতিটি প্রক্রিয়াটির নাম এবং সেশন # প্রদর্শন করবে। আপনি যদি স্থানীয়ভাবে লগ ইন করেন তবে "কনসোল" নামের সেশনের আইডিটি দেখুন।

d:\>tasklist

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0      8,580 K
smss.exe                       316 Services                   0      1,500 K
...snip

সম্পাদনা করুন :

Query Session সেশন আইডিটি পুনরুদ্ধার করবে:

d:\>query session
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
>console           janedoe                   1  Active
 rdp-tcp                                 65536  Listen

আমি কমান্ড লাইনের মাধ্যমে এটি পুনরুদ্ধার করতে চাই।
নেতিবাচক

1
ডান, কমান্ড লাইন থেকে, টাস্কলিস্ট টাইপ করুন।
গ্যারি

1
হুম আসলে আপনি এখানে কিছু হতে পারে। সম্পাদনা করুন: টাস্কলিস্ট / এফআই "চিত্রনামা eq cmd.exe" / এফও তালিকা এই আউটপুটটি বিশ্লেষণের পরিকল্পনা করছি। ধন্যবাদ!
নেতিবাচক

বা আমি এটা করতে পারি। ভাল
নেতিবাচক

tasklistভাল কারণ এটিতে প্রো / এনটি ওএস সংস্করণ প্রয়োজন হয় না। আপনি এক্সপ্লোরার tasklist /fi "imagename eq explorer.exe"
এক্সের

5
for /f "tokens=4 delims= " %%G in ('tasklist /FI "IMAGENAME eq tasklist.exe" /NH') do SET RDP_SESSION=%%G
echo Current RDP Session ID: %RDP_SESSION%

1
অস্কারের সমাধানটি আসলে আমার জন্য কাজ করেছিল, যখন%% G কে% G এর সাথে প্রতিস্থাপন করা হয়: for / f "টোকেনস = 4 ডিলিমস ="% জি ইন ('টাস্কলিস্ট / এফআই "IMAGENAME ইকি টাস্কলিস্ট.এক্সে" / এনএইচ') করুন আরডিপিএসএসিএস =% করুন জি
পাওয়ে স্টানকোভস্কি

2
@ পাউয়েস্ট্যাঙ্কোভস্কি: আপনি যদি এটি ব্যাচ ফাইল (%%) বা কনসোল (%) থেকে চালান তবে পার্থক্যটি
টমাস ওয়েলারের

নোট করুন যে একাধিক ব্যবহারকারী tasklistএকই সাথে চলমান সম্ভাব্য ইভেন্টটিতে এটি বিরতি ।
ম্যাথু লুন্ডবার্গ

5

এটি গ্যারি এর উত্তর এবং অস্কারের উত্তরগুলির দিকগুলি একত্রিত করে । গ্যারি দ্বারা উল্লিখিত হিসাবে, এর আউটপুট query sessionদেখতে কিছু একরকম লাগে

 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
>console           janedoe                   1  Active
 rdp-tcp                                 65536  Listen

বা, আমার ক্ষেত্রে ("ব্যবহারকারী পরিবর্তন করুন" ব্যবহার করে)

 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
>console           gman                      1  Active
                   otherguy                  2  Disc

(আমার কাছে আরডিপি সেট আপ নেই, সুতরাং আমি এটি দিয়ে পরীক্ষা করতে পারছি না)) সম্ভবত সক্রিয়ভাবে সেশনের আইডি নির্ধারণ করা প্রশ্নের উদ্দেশ্যটিই হ'ল। আমি query session বর্তমান সেশনের মতো দেখতে এর আউটপুট অনুসন্ধান করার পরামর্শ দিচ্ছি :

 for /f "tokens=2-4" %a in ('query session') do @if "%a"=="%username%" if "%c"=="Active" echo %b

যা 2nd, 3 য়, এবং 4 র্থ শব্দ আউটপুট প্রতিটি লাইন থেকে (যা আমরা ব্যবহারকারী নাম করার জন্য, [অধিবেশন] আইডি, এবং রাষ্ট্র আশা) নির্ধারণ query sessionকরতে %a, %bএবং %cযথাক্রমে, এবং তারপর লাইন কোথা থেকে রিপোর্ট সেশন আইডি USERNAME আমি এবং স্টেট হ'ল Active

দেখা যাচ্ছে যে প্যারামিটার query sessionলাগে usernameতাই উপরেরটি সরল করা যায়

 for /f "tokens=2-4" %a in ('query session %username%') do @if "%c"=="Active" echo %b

অথবা

for /f "tokens=3-4" %a in ('query session %username%') do @if "%b"=="Active" echo %a

এটি কোনও স্ক্রিপ্টে (ব্যাচ ফাইল) ব্যবহার করতে, আপনি বলতে চাইতে পারেন

set MY_SESSION_ID=unknown
for /f "tokens=3-4" %%a in ('query session %username%') do @if "%%b"=="Active" set MY_SESSION_ID=%%a

ব্যবহার করে %%aএবং %%b(এর পরিবর্তে %aএবং %b) কারণ এটি কোনও স্ক্রিপ্টে রয়েছে। @ পুরো ব্যাচের ফাইলটি যদি নীচে থাকে তবে আপনি সম্ভবত এটি ছেড়ে দিতে পারেন @echo off। সূচনাটি আপনাকে unknownত্রুটি-পরিচালনা করতে দেয় ( query session সেই মিলগুলির আউটপুটে কোনও লাইন নেই কিনা তা নির্ধারণ করে)। ব্যায়াম হিসাবে যদি আউটপুটে একাধিক মিলের লাইন থাকে তবে তা চিহ্নিত করতে এবং প্রতিক্রিয়া জানাতে ত্রুটি-পরিচালনা প্রসারিত করা query session


আমার বাস্তব-জগতের ক্ষেত্রে, যদি একাধিক সেশন থাকে তবে তাদের সর্বদা একই ব্যবহারকারীর নাম থাকবে। তবে এটি সম্ভবত আদর্শ নয়।
ম্যাথু লুন্ডবার্গ

@ ম্যাথিউল্ডবার্গ: স্টেট কেমন? বর্তমানের ব্যতীত সেশনগুলি কি "অ্যাক্টিভ" হিসাবে চিহ্নিত?
জি-ম্যান বলছেন 'পুনরায় ইনস্টল করুন মনিকা'

হ্যাঁ, তারা সক্রিয় থাকবেন। এটি একটি সার্ভার ওএস।
ম্যাথু লুন্ডবার্গ 5'16

2

সেশনের নামের বিপরীতে, সেশন আইডি কোনও ভেরিয়েবলে সংরক্ষণ করা হয় না এবং এটি পাওয়া সহজ হয় না। আমি নিশ্চিত যে এটির একটি আছে তবে আমি কোনও বিল্ট ইন কমান্ড লাইন সরঞ্জামটি ভাবতে পারি না যা এটি করে।

তবে, আমি একটি ক্ষুদ্র .exe ফাইল (সি #,। নেট 4) লিখেছি যা এটি করে।

এটি উভয়ই সেশন আইডি প্রদর্শন করবে এবং এটি রিটার্ন কোড হিসাবে থাকবে যাতে আপনি এটি বিভিন্ন স্ক্রিপ্ট / কৌশলগুলিতে ব্যবহার করতে পারেন।

মিডিয়াফায়ারে ফাইলের লিঙ্ক


1

এটি অস্কার বেহ থেকে প্রাপ্ত কোডের উপর ভিত্তি করে।

tasklistনিজেই একটি প্রদত্ত এক্সিকিউটেবলের সমস্ত দৃষ্টান্তের জন্য সেশন আইডি (এবং অন্যান্য তথ্য) প্রতিবেদন প্রদর্শন করবে। আপনি যেমন কমান্ডটি চালাচ্ছেন, এটি আপনার সেশন আইডিটি প্রদর্শন করবে। তার কোডের একমাত্র সম্ভাব্য ত্রুটি হ'ল প্রোগ্রামটির একাধিক উদাহরণ রয়েছে কিনা তা আপনাকে অবহিত করে না, যার ফলে স্ক্রিপ্টটি ভুল ফলাফল ফিরে আসতে পারে।

tasklistএই কমান্ডটি চালাচ্ছে যে আর কোনও অধিবেশন চলছে না তা নিশ্চিত করার জন্য এখানে সমস্ত দৃষ্টান্তের প্রতিবেদন করছি :

for /f "tokens=4 delims= " %%G in ('tasklist /FI "IMAGENAME eq tasklist.exe" /NH') do echo Session ID %%G

আপনি যদি দুটি সেশন আইডির রিপোর্ট হওয়া দেখতে পান তবে আবার স্ক্রিপ্টটি চালান।

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