দূরবর্তী পাওয়ারশেল সেশনে শংসাপত্রগুলি কীভাবে বজায় রাখা যায়?


13

আমার একটি অ্যাজুরি ফাইল শেয়ার রয়েছে এবং এটি আমার অ্যাজুরে ভিএম থেকে ব্যবহার করতে চাই - সেমিডকি সহ ভিএমগুলিতে শংসাপত্রগুলি রেখে এবং নেট ব্যবহারের সাথে মাউন্ট করার পরে। উইন্ডোজ সার্ভার 2012 আর 2 তে স্থানীয় পাওয়ারশেল সেশনে এই কমান্ডগুলি চালিয়ে এটি পরীক্ষা করা হয়েছিল।

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

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

$Session = New-PSSession -ConnectionUri $Uri -Credential $DomainCredential

$ScriptBlockContent = { 
Param ($Arg1,$Arg2,$Arg3)
cmdkey /add:$Arg1 /user:$Arg2 /pass:$Arg3}

Invoke-Command -Session $Session -ScriptBlock $ScriptBlockContent -ArgumentList ($Share,$AccountName,$Key)

এবং ত্রুটি:

PS C:\> Invoke-Command -Session $Session -ScriptBlock $ScriptBlockContent -ArgumentList ($Share,$AccountName,$Key)
CMDKEY: Credentials cannot be saved from this logon session.

সিনট্যাক্স পরীক্ষা করতে cmdkey / list দিয়ে প্রতিস্থাপন করা হয়েছে, এবং কোনও ত্রুটি নেই।

PS C:\> Invoke-Command -Session $Session -ScriptBlock $ScriptBlockContent
Currently stored credentials:
* NONE *

উইন্ডোজ আপডেট পাওয়ারশেল মডিউল (ইনভোক-ডাব্লুউইনস্টল) এর সাথে একই ধরণের সমস্যা ছিল (এবং এটি ঠিক করতে পারল না), যা ভিএম-র স্থানীয় পাওয়ারশেল সেশনে ঠিকঠাক চলবে, তবে রিমোট পাওয়ারশেলের মাধ্যমে শুরু হলে আপডেট হয় না।

এই কাছাকাছি পেতে কোনও উপায়?

উত্তর:


2

উইন্ডোজ যেভাবে প্রমাণীকরণ পরিচালনা করে এটি কোনও দূরবর্তী পাওয়ারশেল সেশনের মাধ্যমে শংসাপত্রগুলি সেট করতে সিএমডিকেইই ব্যবহার করা সম্ভব নয়, সিএমডিকেই ব্যবহার করার সময় এটি ইন্টারেক্টিভভাবে সম্পন্ন করতে হবে।

আপনার মত অনুরূপ উত্তর খুঁজছেন একটি থ্রেড থেকে ডন জোনস উদ্ধৃত :

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


2

আপনি শিডিয়ুলড টাস্কটি ব্যবহার করতে না চাইলে আপনি সিসিনটার্নালসের পিএক্সেক্সেক.এক্সই ব্যবহার করতে পারেন । সাধারণত, আপনি যখন পাওয়ারশেল সেশনটি শুরু করেন, তখন এটি স্থানীয় ব্যবহারকারীর পরিবর্তে (রিমোট কম্পিউটারে কমান্ড চালিয়ে এটি servicesনিশ্চিত করতে পারবেন query session) প্রসেসে চালিত হয় যা সেমিডকি ব্যর্থ হয়।

এ থেকে উত্তরণের জন্য, আমাদের স্থানীয় ব্যবহারকারীর প্রক্রিয়াতে cmdkey.exe চালানো দরকার যা PsExec.exe's -iপতাকা ব্যবহার করে করা যেতে পারে

প্রোগ্রামটি চালান যাতে এটি দূরবর্তী সিস্টেমে নির্দিষ্ট সেশনের ডেস্কটপের সাথে ইন্টারেক্ট করে। কোনও সেশন নির্দিষ্ট না করা থাকলে কনসোল সেশনে প্রক্রিয়াটি চলমান runs

এখন, চ্যালেঞ্জটি হ'ল দূরবর্তী যন্ত্রটিতে স্থানীয় ব্যবহারকারীর সেশন আইডি পাওয়া get query sessionকমান্ড চালিয়ে আমি এটি অর্জন করেছি যা মেশিনে সক্রিয় সেশনগুলির একটি তালিকা দেয়। সম্ভাব্য সমাধানগুলির মধ্যে একটি হ'ল -

$processId = Invoke-Command $session -ScriptBlock  {
param($user)
    $sessions = query session $user;
    return $sessions[1].split(" ", [System.StringSplitOptions]::RemoveEmptyEntries)[2];

} -ArgumentList ($user)

এখানে $userদূরবর্তী কম্পিউটারে স্থানীয় ব্যবহারকারীর ব্যবহারকারীর নাম রয়েছে।

একবার আপনি সেশন আইডি পেয়ে গেলে, আপনি কেবল কার্যকর করতে পারেন

PsExec \\<computer_name> -u <local_user_name> -p <password> -h -i $processId cmdkey.exe /generic:testtt /user:userr /pass:pass

বিঃদ্রঃ:

  1. রিমোট মেশিনে ব্যবহারকারীর সেশন আইডি পাওয়ার আরও ভাল উপায় হতে পারে।
  2. এই মুহুর্তে, পিএসএক্সেক চালানোর সময়, আমি আবার রিমোট সিস্টেমের সাথে একটি সংযোগ তৈরি করছি যা এড়ানো যায় (আমি পরীক্ষা করিনি)।
  3. কমান্ডটি ব্যবহারকারী ব্যবহারকারীর রিমোট মেশিনে অ্যাডমিন অ্যাক্সেস থাকা উচিত।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.