open - powershell download windows 10




كيف يمكنني تشغيل بويرشيل كمسؤول و مع وسيطات من ملف دفعي؟ (2)

لقد وجدت إجابات لكلا المهمتين بشكل منفصل، ولكن ليس معا:

  • تشغيل بويرشيل كمسؤول من ملف دفعي

  • تشغيل بويرشيل مع وسيطات من ملف دفعي

ولكن أريد تشغيل بويرشيل كمسؤول ومع الحجج من ملف دفعي.

لهذا السبب، أنا مقتنع بأن هذه ليست نسخة مكررة حتى الآن.

وهذه المشكلة معقدة لهذا السبب:

أنا باستخدام مفتاح ArgumentList للإشارة إلى مسار الملف عند تشغيل بويرشيل مرتفعة. أنا أيضا استخدامه لتمرير في الحجج. بشكل منفصل، لقد تمكنت من استخدام هذا التبديل بنجاح. لا يبدو كما لو أنني يمكن استخدامه لكلا المهام على الرغم من.

وإليك كيفية استخدام بويرشيل حاليا:

كمسؤول:

powershell -Command "& {Start-Process powershell -ArgumentList '-File "filePath.ps1' -Verb RunAs}"

مع الحجج:

powershell -ExecutionPolicy unrestricted Import-Module "filePath.ps1" -ArgumentList "arg1","arg2"

ما حاولت:

لقد حاولت فقط إضافة حججتي إلى ArgumentList حيث يتم تمرير الملف في، ولكن لم يتم التعرف عليها.

كما حاولت إضافة -Verb RunAs إلى خط حجة العمل، ولكن يعتقد بويرشيل أن كنت أحاول أن تمر في حجة أخرى تسمى الفعل، وفشلت في تشغيل بويرشيل كما والمشرف.

هل من الممكن تحقيق كل من بويرشيل تشغيل كمسؤول، ومع الحجج، عن طريق التحول كيف أنا تمرير في الحجج، أو كيف أنا رفع بويرشيل؟


يمكنك القيام بذلك عن طريق الاستيلاء على سطر الأوامر قصيرة قابلة للتنفيذ كتبت تسمى Elevate32.exe (أو Elevate64.exe للإصدار 64 بت). يمكنك الحصول عليه هنا:

http://www.westmesatech.com/misctools.html (ElevationToolkit1.zip)

مثال:

elevate64 -- powershell.exe -file C:\scripts\myscriptfile.ps1

كل شيء بعد -- هو سطر الأوامر الذي تريد رفعه.


فمن الممكن أن تحل مشكلتك دون أدوات طرف ثالث، ولكن الحل هو غامض إلى حد ما.

لذلك، والنظر في تحميل بيل ستيوارت مفيدة elevate32 و elevate64 أدوات بدلا من ذلك، كما هو موضح في جوابه ، مما يبسط الحل.

وإليك مثال بسيط يستدعي كمدليت Get-Date مع وسيطات في جلسة بويرشيل مرتفعة تم إطلاقها من cmd.exe (أو ملف دفعي):

powershell -command "start-process -verb runas powershell" "'-noexit -command get-date -UFormat %s'"

لاحظ كيفية تمرير سطر الأوامر إلى جلسة بس المرتفعة التي يتم تمرير وسيطة -command وسيطة -command ك وسيطة واحدة محاطة في علامات الاقتباس الفردية المضمنة .

الاقتباس قد تحصل صعبة، ولكن هذا النهج يعمل أيضا مع استدعاء *.ps1 ملفات *.ps1 حيث المبدأ:

  • powershell -command "start-process -verb runas powershell" هو الجزء الثابت من سطر الأوامر.

  • يجب أن تحتوي السلسلة "..." المغلقة "..." المتبقية على سلسلة مفردة متداخلة مع اقتباس أن بويرشيل تعترف (علامات الاقتباس المفردة هي الأسهل) التي تحتوي على كافة الوسيطات التي يمكنك تمريرها مباشرة إلى powershell ... استدعاء سطر الأوامر.

تطبق على المثال الخاص بك:

... "'-File C:\path\to\filePath.ps1 arg1 arg2'"

ملاحظة: تأكد من استخدام المسار الكامل لملف البرنامج النصي الخاص بك ، لأن جلسة بس مرتفعة لا (بالضرورة) تشغيل في نفس الدليل مثل جلسة الاستدعاء.

إذا كنت بحاجة إلى اقتباس الوسيطات داخل السلسلة المتداخلة، فاستخدم \" :

... "'-File \"c:\path with spaces\to\filePath.ps1\" arg1 arg2'"






cmd