[][src]Crate powershell_script

Windows Powershell script runner

This crate is pretty basic. It uses std::process::Command to pipe commands to PowerShell. In addition to that there is a convenient wrapper around process::Output especially tailored towards the usecase of running Windows PowerShell commands.

Example

I recommend that you write the commands to a *.ps file to be able to take advantage of existing tools to create the script.

This example creates a shortcut of notepad.exe to the desktop.

NB. If you use OneDrive chances are that your desktop is located at "$env:UserProfile\OneDrive\Desktop" instead.

In script.ps

$SourceFileLocation="C:\Windows\notepad.exe"
$ShortcutLocation="$env:UserProfile\Desktop\notepad.lnk"
$WScriptShell=New-Object -ComObject WScript.Shell
$Shortcut=$WScriptShell.CreateShortcut($ShortcutLocation)
$Shortcut.TargetPath=$SourceFileLocation
$Shortcut.Save()

In main.rs

This example is not tested
use crate powershell_script;

// Creates a shortcut to notpad on the desktop
fn main() {
    let create_shortcut = include_str!("script.ps");
    match powershell_script::run(create_shortcut, true) {
        Ok(output) => {
            println!("{}", output);
        }
        Err(e) => {
            println!("Error: {}", e);
        }
    }
}

You can of course provide the commands as a string literal instead. Just beware that we run each line as a separate command.

The flag print_commands can be set to true if you want each command to be printed to the stdout of the main process as they're run which can be useful for debugging scripts or displaying the progress.

Compatability

This is only tested on Windows and most likely will only work on Windows. It should be possible to support PowerShell Core on Linux with only minor adjustments so leave a feature request if there is any interest in that.

Structs

Output

Enums

PsError

Functions

run

Runs a script in PowerShell. Returns an instance of Output. In the case of a failure when running the script it returns an PsError::Powershell(Output) which holds the output object containing the captures of stderr and stdout for display. The flag print_commands can be set to true if you want each command to be printed to the stdout of the main process as they're run. Useful for debugging scripts.

run_raw

Runs the script and returns an instance of std::process::Output on success. The flag print_commands can be set to true if you want each command to be printed to the stdout of the main process as they're run.