运行 来自 Dart 的外部 Powershell 脚本
Run external Powershell scripts form Dart
在尝试从外部 Powershell 脚本传递 return 值时,Dart 不执行 Powershell 脚本(尝试使用 cmd
和 powershell
)并且仅 returns runtimeType Instance of 'ProcessResult'
.
有没有办法与外部 Powershell 脚本通信?
Dart2Ps.dart
import 'dart:io';
void main() async {
// With Cmd
var script_cmd = 'type "F:\Script\Dart\dart_tests\process\SumScript.ps1" | powershell.exe -c -';
List<int> args = [1, 2];
var sum_cmd = await Process.run('cmd', ['args', script_cmd]);
stdout.write(sum_cmd.stdout);
print(sum_cmd);
// With Powershell
var script_ps =
'powershell -File "F:\Script\Dart\dart_tests\process\SumScript.ps1"';
var sum_ps = await Process.run('powershell', ['args', script_ps]);
stdout.write(sum_ps.stdout);
print(sum_ps);
}
SumScript.ps1
$sum = $args[0] + $args[1]
Write-Host '$sum from Powershell'
return $sum
确保将 dart+powershell 文件放在 dart/lib 文件夹中.
飞镖代码:
import 'dart:io';
void main() {
print(runPowerShellScript(r'C:\tmp\SumScript.ps1', ['1', '2']));
// $sum from Powershell
// 3
}
String runPowerShellScript(String scriptPath, List<String> argumentsToScript) {
return Process.runSync(
'Powershell.exe', ['-File', scriptPath, ...argumentsToScript]).stdout
as String;
}
Powershell 代码:
$sum = $args[0] + $args[1]
Write-Host '$sum from Powershell'
return $sum
在尝试从外部 Powershell 脚本传递 return 值时,Dart 不执行 Powershell 脚本(尝试使用 cmd
和 powershell
)并且仅 returns runtimeType Instance of 'ProcessResult'
.
有没有办法与外部 Powershell 脚本通信?
Dart2Ps.dart
import 'dart:io';
void main() async {
// With Cmd
var script_cmd = 'type "F:\Script\Dart\dart_tests\process\SumScript.ps1" | powershell.exe -c -';
List<int> args = [1, 2];
var sum_cmd = await Process.run('cmd', ['args', script_cmd]);
stdout.write(sum_cmd.stdout);
print(sum_cmd);
// With Powershell
var script_ps =
'powershell -File "F:\Script\Dart\dart_tests\process\SumScript.ps1"';
var sum_ps = await Process.run('powershell', ['args', script_ps]);
stdout.write(sum_ps.stdout);
print(sum_ps);
}
SumScript.ps1
$sum = $args[0] + $args[1]
Write-Host '$sum from Powershell'
return $sum
确保将 dart+powershell 文件放在 dart/lib 文件夹中.
飞镖代码:
import 'dart:io';
void main() {
print(runPowerShellScript(r'C:\tmp\SumScript.ps1', ['1', '2']));
// $sum from Powershell
// 3
}
String runPowerShellScript(String scriptPath, List<String> argumentsToScript) {
return Process.runSync(
'Powershell.exe', ['-File', scriptPath, ...argumentsToScript]).stdout
as String;
}
Powershell 代码:
$sum = $args[0] + $args[1]
Write-Host '$sum from Powershell'
return $sum