[−][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
extern crate powershell_script; use std::io::{stdin, Read}; // 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 |
run_raw | Runs the script and returns an instance of |