প্রশাসক হিসাবে পাওয়ারশেল স্ক্রিপ্ট কীভাবে চালানো যায়


56

আমার উইন্ডোজ 7 ডেস্কটপে আমার স্ক্রিপ্ট.পিএস 1 রয়েছে, যার অ্যাডমিন সুবিধাগুলি প্রয়োজন (এটি একটি পরিষেবা শুরু করে)। আমি এই স্ক্রিপ্টে ক্লিক করতে এবং এডমিন সুবিধা সহ এটি চালাতে চাই।

এটি সম্পাদন করার সহজতম উপায় কী?

উত্তর:


48

আপনার ডেস্কটপে অতিরিক্ত আইকনের সাহায্যে এটি করার একটি উপায় এখানে। আমার ধারণা, আপনি যদি ডেস্কটপে কেবলমাত্র একক আইকন রাখতে চান তবে আপনি অন্য কারও কাছে স্ক্রিপ্টটি সরিয়ে নিতে পারবেন।

  1. আপনার ডেস্কটপে আপনার পাওয়ারশেল স্ক্রিপ্টে একটি শর্টকাট তৈরি করুন
  2. শর্টকাটটিতে ডান ক্লিক করুন এবং বৈশিষ্ট্যগুলি ক্লিক করুন
  3. শর্টকাট ট্যাবে ক্লিক করুন
  4. উন্নত ক্লিক করুন
  5. প্রশাসক হিসাবে রান নির্বাচন করুন

আপনি এখন আপনার ডেস্কটপে নতুন শর্টকাটকে ডাবল-ক্লিক করে উন্নত স্ক্রিপ্টটি চালাতে পারেন।


35
এটি আমার পক্ষে কাজ করেছে, তবে অ্যাডমিনিস্ট্রেটর হিসাবে রান কেবল powershell -f স্ক্রিপ্টের পথের সামনে যোগ করার পরে কেবল কমান্ডটি "সম্পূর্ণ" করার জন্য উপলভ্য হয়ে উঠল …
মউসিও

2
@ মমিও - আমারও এটির দরকার ছিল, মন্তব্যের জন্য ধন্যবাদ
এম.এডমন্ডসন

@ মমিও আপনি কি আমাকে বলতে পারেন যে সেই আদেশটি কেন কাজ করে?
SShaheen

7
@ শাহীন - অ্যাডমিনিস্ট্রেটর হিসাবে চালুর জন্য উপলব্ধ হয়ে ওঠার জন্য, শর্টকাটটি কেবলমাত্র ডকুমেন্ট বা স্ক্রিপ্টটির পরিবর্তে মূলত নির্দেশিত শর্টকাটের পরিবর্তে কোনও প্রকার এক্সিকিউটেবল (উদাহরণস্বরূপ পাওয়ারশেল.এক্সই) নির্দেশ করতে হবে। শর্টকাট script.ps1যেমন কাজ করে, তেমন একটি শর্টকাটও powershell.exe -f script.ps1তবে দ্বিতীয়টি অ্যাডমিনিস্ট্রেটর হিসাবে চালানোর জন্য সেট করা যেতে পারে ( বা স্যুইচটির powershell.exe /?ব্যাখ্যা দেখুন )-f-File
মউসিও

16

ইউএসি-সক্ষম হওয়া সিস্টেমগুলিতে, কোনও স্ক্রিপ্ট পুরো অ্যাডমিন সুবিধার সাথে চলছে কিনা তা নিশ্চিত করতে, আপনার স্ক্রিপ্টের শুরুতে এই কোডটি যুক্ত করুন:

param([switch]$Elevated)

function Test-Admin {
  $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
  $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

if ((Test-Admin) -eq $false)  {
    if ($elevated) 
    {
        # tried to elevate, did not work, aborting
    } 
    else {
        Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
}

exit
}

'running with full privileges'

যখন আপনার স্ক্রিপ্টটি প্রাসঙ্গিক সুইচ দিয়ে চালিত করা হয়, এটি চালানোর আগে সুবিধাগুলি উন্নত করার চেষ্টা করবে।


স্ক্রিপ্টের যদি আর্গুমেন্ট-পরামিতি প্রয়োজন?
কিকিনেট

যদি এটি আমাকে বলে যে এটি সম্পূর্ণ অধিকার নিয়ে চলছে তবে আমার কোডটি অপর্যাপ্ত প্রশাসনিক সুযোগ-সুবিধাগুলি বলে?
mike.b93

@ কিকিনেট এটিকে param(...)উপরের দিকে যুক্ত করুন এবং তাদের ঠিক আগে ফরোয়ার্ড করুন -elevated, আপনি কীভাবে এটি তৈরি করবেন সে সম্পর্কে আপনার চালাক হওয়া দরকার ArgumentList, সম্ভবত String[]ফর্মটি ব্যবহার করতে চাইবেন ।
TWiStErRob

সুন্দর নিফটি - একটি শর্টকাট তৈরির চেয়ে ভাল
মাইকী

13

আপনি যদি একই পাওয়ারের শেলটিতে থাকেন তবে আপনি এটি করতে পারেন:

Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"

এটির সাথে সমস্যাটি হ'ল এটি ডাকা স্ক্রিপ্টের জন্য ওয়ার্কিং ডিরেক্টরিকে পরিবর্তন করে C:\Windows\System32। একটি বিকল্প যা বর্তমান ডিরেক্টরির অপরিবর্তিত: stackoverflow.com/a/57033941/2441655
Venryx

4

যেহেতু এটি আপনার ডেস্কটপে বসে আছে, তাই আমি বলব এটি করার সবচেয়ে অনায়াস উপায় এটিকে এলিভেশন গ্যাজেটে টেনে আনাই ।

অন্যথায় আপনি আপনার PS1 স্ক্রিপ্টের কমান্ডটি ব্যবহার করেelevate একটি পৃথক স্ক্রিপ্ট তৈরি করতে পারেন ।

অথবা, আপনি elevateকেবল পরিষেবা-শুরুর বিটটিতে প্রয়োগ করতে পারেন ।


1

পাওয়ারশেল ISE% উইন্ডির% \ system32 \ উইন্ডোজপাওয়ারশেল \ v1.0 \ পাওয়ারশেল_আইএসই.এক্সএতে থাকে। আপনি এটিতে রাইট ক্লিক করতে পারেন এবং "প্রশাসক হিসাবে চালান" নির্বাচন করতে পারেন এবং সেখান থেকে স্ক্রিপ্টটি চালাতে পারেন।

আপনি এটি উইন্ডোজ লোগো> সমস্ত প্রোগ্রাম> অ্যাকসেসরিজ> উইন্ডোজ পাওয়ারশেলের নীচেও খুঁজে পেতে পারেন এবং সেই শর্টকাটগুলির সাথে একই জিনিসটি করতে পারেন।


0

আপনি যদি এক্সপ্লোরার প্রসঙ্গ-মেনু থেকে সরাসরি অ্যাডমিনিস্ট্রেটর হিসাবে পাওয়ারশেল স্ক্রিপ্ট চালু করার বিকল্প চান তবে আমার উত্তরের বিভাগ 2 এখানে দেখুন: https://stackoverflow.com/a/57033941/2441655


-1

স্ক্রিপ্টের শুরুতে এটি যুক্ত করুন:

$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$testadmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
if ($testadmin -eq $false) {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
exit $LASTEXITCODE
}

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