@@ -193,51 +193,63 @@ private ProcessStartInfo PrepareProcessStartInfo(string command, bool runAsAdmin
193
193
var workingDirectory = Environment . GetFolderPath ( Environment . SpecialFolder . UserProfile ) ;
194
194
var runAsAdministratorArg = ! runAsAdministrator && ! _settings . RunAsAdministrator ? "" : "runas" ;
195
195
196
- ProcessStartInfo info ;
197
- if ( _settings . Shell == Shell . Cmd )
196
+ ProcessStartInfo info = new ( )
198
197
{
199
- var arguments = _settings . LeaveShellOpen ? $ "/k \" { command } \" " : $ "/c \" { command } \" & pause";
200
-
201
- info = ShellCommand . SetProcessStartInfo ( "cmd.exe" , workingDirectory , arguments , runAsAdministratorArg ) ;
202
- }
203
- else if ( _settings . Shell == Shell . Powershell )
198
+ Verb = runAsAdministratorArg ,
199
+ WorkingDirectory = workingDirectory ,
200
+ } ;
201
+ switch ( _settings . Shell )
204
202
{
205
- string arguments ;
206
- if ( _settings . LeaveShellOpen )
207
- {
208
- arguments = $ "-NoExit \" { command } \" ";
209
- }
210
- else
211
- {
212
- arguments = $ "\" { command } ; Read-Host -Prompt \\ \" Press Enter to continue\\ \" \" ";
213
- }
203
+ case Shell . Cmd :
204
+ {
205
+ info . FileName = "cmd.exe" ;
206
+ info . ArgumentList . Add ( _settings . LeaveShellOpen ? "/k" : "/c" ) ;
207
+ info . ArgumentList . Add ( command ) ;
208
+ break ;
209
+ }
214
210
215
- info = ShellCommand . SetProcessStartInfo ( "powershell.exe" , workingDirectory , arguments , runAsAdministratorArg ) ;
216
- }
217
- else if ( _settings . Shell == Shell . RunCommand )
218
- {
219
- var parts = command . Split ( new [ ] { ' ' } , 2 ) ;
220
- if ( parts . Length == 2 )
221
- {
222
- var filename = parts [ 0 ] ;
223
- if ( ExistInPath ( filename ) )
211
+ case Shell . Powershell :
224
212
{
225
- var arguments = parts [ 1 ] ;
226
- info = ShellCommand . SetProcessStartInfo ( filename , workingDirectory , arguments , runAsAdministratorArg ) ;
213
+ info . FileName = "powershell.exe" ;
214
+ if ( _settings . LeaveShellOpen )
215
+ {
216
+ info . ArgumentList . Add ( "-NoExit" ) ;
217
+ info . ArgumentList . Add ( command ) ;
218
+ }
219
+ else
220
+ {
221
+ info . ArgumentList . Add ( "-Command" ) ;
222
+ info . ArgumentList . Add ( command ) ;
223
+ }
224
+ break ;
227
225
}
228
- else
226
+
227
+ case Shell . RunCommand :
229
228
{
230
- info = ShellCommand . SetProcessStartInfo ( command , verb : runAsAdministratorArg ) ;
229
+ var parts = command . Split ( new [ ] { ' ' } , 2 ) ;
230
+ if ( parts . Length == 2 )
231
+ {
232
+ var filename = parts [ 0 ] ;
233
+ if ( ExistInPath ( filename ) )
234
+ {
235
+ var arguments = parts [ 1 ] ;
236
+ info . FileName = filename ;
237
+ info . ArgumentList . Add ( arguments ) ;
238
+ }
239
+ else
240
+ {
241
+ info . FileName = command ;
242
+ }
243
+ }
244
+ else
245
+ {
246
+ info . FileName = command ;
247
+ }
248
+
249
+ break ;
231
250
}
232
- }
233
- else
234
- {
235
- info = ShellCommand . SetProcessStartInfo ( command , verb : runAsAdministratorArg ) ;
236
- }
237
- }
238
- else
239
- {
240
- throw new NotImplementedException ( ) ;
251
+ default :
252
+ throw new NotImplementedException ( ) ;
241
253
}
242
254
243
255
info . UseShellExecute = true ;
0 commit comments