سؤال

أنا أدعو PowerShell مثل ذلك:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -noninteractive -nologo -file "C:\Users\dummy\Documents\dev\powershell\samples\test.ps1"

أنا أسميها من نص Python ، ولكن يمكن ملاحظة نفس المشكلة إذا تم استدعاؤها عبر اختصار. اعتقدت -NonInteractive سوف يتسبب العلم في تنفيذ Poweshell في نافذة خفية ، لكنه لا يفعل ذلك. هل هناك طريقة لقمع نافذة وحدة التحكم عند استدعاء PowerShell من تطبيق خارجي؟

حل يعتمد على اقتراح يوهانس روسيل

import subprocess
st_inf = subprocess.STARTUPINFO()
st_inf.dwFlags = st_inf.dwFlags | subprocess.STARTF_USESHOWWINDOW
subprocess.Popen(["notepad"], startupinfo=st_inf)
هل كانت مفيدة؟

المحلول

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

ومع ذلك ، لدى PowerShell أيضًا -WindowStyle المعلمة التي يمكنك ضبطها على مخفي.

نصائح أخرى

لم يكن لدي حظ مع -WindowStyle Hidden, ، لأن نافذة وحدة التحكم ظهرت في كل مرة لفترة من الوقت.

لهذا السبب أستخدم exe المساعد يسمى psrun.exe الذي يفعل ذلك بالضبط. يمكنك تنزيل ملف المصدر و exe تشغيل المهام المجدولة مع Winform GUI في PowerShell. أنا استخدمه للمهام المجدولة.

(لاحظ أن المعلمة -WindowStyle متوفرة فقط لـ V2.)

يستخدم -WindowStyle Hidden. يرى هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top