my $cmdline = 'C:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -command "& D:\scripts\get-info.ps1 "."\'$val1\' "."\'$filename\'"'; print $cmdline, "\n"; Win32::Process::Create( $process, $^X, $cmdline, 0, DETACHED_PROCESS, ".", ); #### use strict; use warnings; use Win32::Process; my $val1 = 'dummy1'; my $filename = 'dummy2'; my $q_val1 = "'" . $val1 . "'"; my $q_filename = "'" . $filename . "'"; my $appname = 'C:\windows\system32\WindowsPowerShell\v1.0\powershell.exe'; my $ps_command = join ' ', ( '&', 'D:\scripts\get-info.ps1', $q_val1, $q_filename, ) my $cmdline = qq{$appname -command "$ps_command"}; print $cmdline, "\n"; my $process; my $rc = Win32::Process::Create( $process, $appname, $cmdline, 0, 0, # replace with DETACHED_PROCESS later ".", ); if ( $rc == 0 ) { print Win32::FormatMessage( Win32::GetLastError() ); } else { print "Success!\n"; }