FarNet.FSharp.PowerShell 3.0.0

Prefix Reserved
dotnet add package FarNet.FSharp.PowerShell --version 3.0.0                
NuGet\Install-Package FarNet.FSharp.PowerShell -Version 3.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FarNet.FSharp.PowerShell" Version="3.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FarNet.FSharp.PowerShell --version 3.0.0                
#r "nuget: FarNet.FSharp.PowerShell, 3.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FarNet.FSharp.PowerShell as a Cake Addin
#addin nuget:?package=FarNet.FSharp.PowerShell&version=3.0.0

// Install FarNet.FSharp.PowerShell as a Cake Tool
#tool nuget:?package=FarNet.FSharp.PowerShell&version=3.0.0                

FarNet.FSharp.PowerShell

F# friendly PowerShell Core helper

Package (two in one)

(1) The NuGet package FarNet.FSharp.PowerShell may be used as usual in F# projects. In this case PowerShell Core comes with its dependency Microsoft.PowerShell.SDK (batteries included because Windows PowerShell cannot be used).

(2) The package is also used by FarNet.FSharpFar in Far Manager and its satellite fsx.exe. In this case PowerShell Core comes with another package FarNet.PowerShellFar. To install FarNet packages, follow these steps. Thus, you need these packages in Far Manager:

  1. FarNet - Far Manager .NET host and API for modules
  2. FarNet.FSharpFar - F# compiler service host and tools
  3. FarNet.PowerShellFar - PowerShell Core, host and tools
  4. FarNet.FSharp.PowerShell - this package connects 2. and 3. in 1.

It looks like a lot but includes all the batteries and the power plant. This setup is portable with Far Manager, with caveats about prerequisites.

Overview

F# code

The PS type wraps the PowerShell class and exposes somewhat similar members.

Use PS.Create() instead of PowerShell.Create().

Use Script() and Command() instead of AddScript and AddCommand(). PS does not directly support command chains. But it is fine to invoke several scripts and commands using the same PS instance.

Use the type safe generic InvokeAs() in addition to Invoke(). Result objects must be compatible with the specified type.

Use F# asynchronous InvokeAsync() and InvokeAsyncAs(). For parallel scenarios use different PS instances.

Use the operator ? for getting PSObject properties. Note, it also works for Hashtable wrapped by PSObject.

PowerShell code

The default $ErrorActionPreference is Stop, safe for non-interactive.

Use Get-Type to get a type defined in the calling F# assembly or script.

Example

"Hello, world!" example:

open FarNet.FSharp.PowerShell

PS.Create().Script("Write-Output 'Hello, world!'").Invoke()
|> printfn "%A"

See also

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.0.0 31 11/30/2024
2.0.0 657 11/19/2023
1.0.1 1,089 1/1/2023
1.0.0 780 11/18/2022
0.2.0 876 8/18/2022
0.1.1 929 3/6/2021
0.1.0 1,008 6/13/2020
0.0.5 940 6/11/2020
0.0.4 977 6/10/2020
0.0.3 909 6/9/2020
0.0.2 933 6/9/2020
0.0.1 957 6/9/2020