স্পষ্টতই .ps1 স্ক্রিপ্টটি প্রশাসক হিসাবে সরাসরি ডাবল ক্লিক করে চালানোর সহজ উপায় নেই; এটি চালানোর জন্য আপনি রেজিস্ট্রি সম্পাদনা করতে পারেন, তবে তারপরে প্রশাসক হিসাবে চালিত করার জন্য, স্পষ্টতই আপনাকে এটি ইতিমধ্যে চলমান পাওয়ারশেলের মধ্যে থেকে একটি নতুন এলিভেটেড পাওয়ারশেল খুলতে বলতে হবে। দুর্ভাগ্যক্রমে, যতদূর আমি দেখতে সক্ষম হয়েছি, প্রতিবার এটি করার পরে, এলিভেটেড প্রম্পটটি মূল স্ক্রিপ্টের চেয়ে আলাদা ডিরেক্টরিতে খোলে! সুতরাং, উদাহরণস্বরূপ, যদি আমার কাছে নিম্নলিখিত স্ক্রিপ্ট থাকে:
$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if($principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
.\mylocalscript.ps1
Write-Host "Just an example!"
}
else
{
Start-Process -FilePath "powershell" -ArgumentList "-NoExit $('-File ""')$(Get-Location)$('\')$($MyInvocation.MyCommand.Path)$('""')" -Verb runAs
}
এটি ব্যর্থ হয় কারণ, প্রশাসক হিসাবে খোলার পরে, স্থানীয় স্ক্রিপ্ট যা একবারে মূল স্ক্রিপ্টে স্থানীয় ছিল সেগুলি আর স্থানীয় নয় এবং তারপরে এটি সন্ধান করতে পারে না। মূলত, আমার নতুন এলিভেটেড পাওয়ারশেল উইন্ডোটি বলার একটি উপায় দরকার যা মূল স্ক্রিপ্টের ডিরেক্টরিতে স্বয়ংক্রিয়ভাবে ফিরে আসে।
এটি করার সর্বোত্তম উপায় কী?