#script #power-shell #scripting #ps

powershell_script

一个用于运行 Windows PowerShell 脚本的库

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命令行工具

Download history 1644/week @ 2024-03-14 1522/week @ 2024-03-21 1454/week @ 2024-03-28 1583/week @ 2024-04-04 1822/week @ 2024-04-11 1716/week @ 2024-04-18 1645/week @ 2024-04-25 2237/week @ 2024-05-02 2253/week @ 2024-05-09 2424/week @ 2024-05-16 1590/week @ 2024-05-23 2722/week @ 2024-05-30 1897/week @ 2024-06-06 1754/week @ 2024-06-13 2145/week @ 2024-06-20 1380/week @ 2024-06-27

7,544 每月下载量
5 crates 中使用

MIT 许可证

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 上的常见任务,如创建指向文件的快捷方式(符号链接需要管理员权限),但这最好在单独的创建中完成,这样这个包就可以专注于运行脚本。

非常欢迎任何包含错误修复或效率改进的拉取请求。

无运行时依赖

特性