17 个版本 (6 个稳定版)
1.1.0 | 2023年4月12日 |
---|---|
1.0.4 | 2022年8月12日 |
1.0.2 | 2022年4月4日 |
0.3.2 | 2022年2月25日 |
0.1.4 | 2019年11月7日 |
#346 在 命令行工具
7,544 每月下载量
在 5 crates 中使用
20KB
291 行
Windows Powershell 脚本运行器
这个 crate 非常基础。它使用 std::process::Command
将命令传递给 PowerShell。除此之外,还有一个针对运行 Windows PowerShell 命令的用例特别定制的 process::Output
方便包装。
用法
我建议您将命令写入到 *.ps
文件中,以便利用现有工具创建脚本。
此示例创建了一个指向桌面 notepad.exe
的快捷方式。
在 script.ps
$SourceFileLocation="C:\Windows\notepad.exe"
$ShortcutLocation=[Environment]::GetFolderPath("Desktop")+"\notepad.lnk"
$WScriptShell=New-Object -ComObject WScript.Shell
$Shortcut=$WScriptShell.CreateShortcut($ShortcutLocation)
$Shortcut.TargetPath=$SourceFileLocation
$Shortcut.Save()
在 main.rs
use powershell_script;
fn main() {
let create_shortcut = include_str!("script.ps");
match powershell_script::run(create_shortcut) {
Ok(output) => {
println!("{}", output);
}
Err(e) => {
println!("Error: {}", e);
}
}
}
当然,您也可以提供命令作为字符串字面量。但请注意,我们将每一行作为单独的命令运行。
如果您希望在运行时将每个命令打印到主进程的 stdout
,可以将 print_commands
标志设置为 true
,这对于调试脚本或显示进度非常有用。
使用 PsScriptBuilder
进行更好的控制
您可以使用 PsScriptBuilder
来配置多个选项,而不是使用 powershell_script::run()
运行脚本
use powershell_script::PsScriptBuilder;
fn main() {
let ps = PsScriptBuilder::new()
.no_profile(true)
.non_interactive(true)
.hidden(false)
.print_commands(false)
.build();
let output = ps.run(r#"echo "hello world""#).unwrap();
assert!(output.stdout().unwrap().contains("hello world"));
}
功能和兼容性
在 Windows 上,默认使用随 Windows 一起提供的 PowerShell,但您还可以通过启用 core
功能来使用 Windows 上的 PowerShell Core 运行脚本。
在其他所有操作系统上,它将使用 PowerShell Core 运行脚本。
贡献
目前,这只是一个方便的包装器,用于运行 PowerShell 脚本,我一直在考虑创建一个 utils
包,其中包含 Windows 上的常见任务,如创建指向文件的快捷方式(符号链接需要管理员权限),但这最好在单独的创建中完成,这样这个包就可以专注于运行脚本。
非常欢迎任何包含错误修复或效率改进的拉取请求。