قم بتشغيل msiexec من PowerShell واحصل على رمز الإرجاع
-
29-09-2019 - |
سؤال
مع BAT/CMD
السيناريو يمكنني استخدامه ببساطة "msiexec /i <whatever.msi> /quiet /norestart"
ثم تحقق %errorlevel%
للنتيجة.
مع VBScript
, ، باستخدام Wscript.Shell
هدف Run()
الطريقة ، يمكنني الحصول على النتيجة مثل هذه:
"result = oShell.Run("msiexec /i ...", 1, True)"
كيف يمكنني القيام بذلك مع PowerShell؟
المحلول
أود أن أختتم ذلك في عملية البدء واستخدام خاصية exitcode لكائن العملية الناتج. فمثلا
(Start-Process -FilePath "msiexec.exe" -ArgumentList "<<whatever>>" -Wait -Passthru).ExitCode
نصائح أخرى
$LastExitCode
أو
$?
اعتمادا على ما أنت بعد. السابق هو عدد صحيح ، الأخير مجرد منطقية. بالإضافة إلى، $LastExitCode
يتم ملؤها فقط للبرامج الأصلية التي يتم تشغيلها ، بينما $?
يخبرنا بشكل عام ما إذا كان تشغيل الأمر الأخير ناجحًا أم لا - لذلك سيتم تعيينه أيضًا على CMDlets.
PS Home:\> cmd /c "echo foo"; $?,$LASTEXITCODE
foo
True
0
PS Home:\> cmd /c "ech foo"; $?,$LASTEXITCODE
'ech' is not recognized as an internal or external command,
operable program or batch file.
False
1
يمكنك أيضًا استخدام مجموعة PowerShell Deployment Kit التي توفر عدة أشياء.
ثم يمكنك استخدام على سبيل المثال
Execute-MSI -Action 'Install' -Path "$dirFiles\your.msi" -AddParameters "INSTALLFOLDER=C:\$appFolder"
معلومات http://psappdeploytoolkit.com/