كيف أجعل Powershell يقوم بتشغيل ملف دفعي ثم يظل مفتوحًا؟
-
08-06-2019 - |
سؤال
على سبيل المثال؛مع موجه الأوامر القديم سيكون:
cmd.exe /k mybatchfile.bat
المحلول
أسقط في مثيل cmd (أو في الواقع PowerShell نفسه) واكتب هذا:
powershell -?
سترى أن powershell.exe يحتوي على معلمة "-noexit" التي تخبره بعدم الخروج بعد تنفيذ "أمر بدء التشغيل".
نصائح أخرى
عند تشغيل PowerShell.exe، ما عليك سوى توفير ملف -لا خروج التبديل مثل ذلك:
PowerShell -NoExit -File "C:\SomeFolder\SomePowerShellScript.ps1"
PowerShell -NoExit -Command "Write-Host 'This window will stay open.'"
أو إذا كنت تريد تشغيل ملف ثم تشغيل أمر وإبقاء النافذة مفتوحة، فيمكنك القيام بشيء مثل هذا:
PowerShell -NoExit "& 'C:\SomeFolder\SomePowerShellScript.ps1'; Write-Host 'This window will stay open.'"
ال -يأمر يتم تضمين المعلمة إذا لم يتم توفيرها، وهنا نستخدم & لاستدعاء البرنامج النصي PowerShell، و ; يفصل أوامر PowerShell.
وأيضا في الجزء السفلي من مشاركة مدونتي أعرض تغييرًا سريعًا في السجل يمكنك إجراؤه ليظل PowerShell مفتوحًا دائمًا بعد تنفيذ برنامج نصي/أمر، بحيث لا تحتاج دائمًا إلى توفير مفتاح -NoExit بشكل صريح طوال الوقت.
أنا متأكد من أنك اكتشفت هذا بالفعل ولكني قمت بنشره للتو
$CreateDate = (Get-Date -format 'yyyy-MM-dd hh-mm-ss')
$RemoteServerName ="server name"
$process = [WMICLASS]"\\$RemoteServerName\ROOT\CIMV2:win32_process"
$result = $process.Create("C:\path to a script\test.bat")
$result | out-file -file "C:\some path \Log-$CreatedDate.txt"