powershell_script 1.1.0

A library for running Windows PowerShell scripts
Documentation
# 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.

## Usage


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.

**In `script.ps`**

```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()
```

**In `main.rs`**

```rust
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);
        }
    }
}
```

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.

## Use the `PsScriptBuilder` for better control


Instead of running a script using `powershell_script::run()` you can use
`PsScriptBuilder` to configure several options:

```rust
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"));
}
```

## Features and compatability


On Windows it defaults to using the PowerShell which ships with Windows, but you
can also run scripts using PowerShell Core on Windows by enabling the
`core` feature.

On all other operating systems it will run scripts using PowerShell core.

## Contributing


Right now this is only meant as a convenient wrapper for running PowerShell scripts,
and I've been thinking about creating a `utils` crate with common tasks on Windows
like creating a shortcut to a file (symlinking requires administrative privileges)
but that will be better off in a separate create so this can focus on running scripts.

Any pull requests with bugfixes or efficiency improvements is greatly appreciated.