سؤال

مع 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/

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