A PowerShell provider allows any data store to be exposed like a file system as if it were a mounted drive.
In other words, the data in your data store can be treated like files and directories so that a user can navigate data via cd
or dir
.
SHiPS is a PowerShell provider.
To be more precise it's a provider utility that simplifies developing PowerShell providers.
AppVeyor (Windows) | Travis CI (Linux / macOS) |
---|---|
AppVeyor (Windows) | Travis CI (Linux / macOS) |
---|---|
AppVeyor (Windows) |
---|
- Windows
- PowerShell v5 (or later), which is shipped in Win10, Windows Server 2016, or WMF 5.1
- Linux or Mac
git clone https://github.com/PowerShell/SHiPS.git
cd <yourclonefolder>\SHiPS\src\
# get the dotnet CLI tool
# and Windows10 SDK if you are running on Windows
.\bootstrap.ps1
# build SHiPS fullclr
.\build.ps1 net46
# or build SHiPS on .Net CoreCLR
.\build.ps1 netcoreapp2.0
- You can install SHiPS from the PowerShell Gallery
- Install SHiPS' binaries which you just built on your box:
# you need to launch PowerShell as Administrator cd <yourclonefolder>\SHiPS Import-Module .\tools\setup.psm1 Install-SHiPS
Import-Module .\tools\setup.psm1
Invoke-SHiPSTest
Let's take the FamilyTree module as our example here. Assuming you have done the above steps, i.e., git clone, build, and run Install-SHiPS, now try the following.
Import-Module SHiPS
Import-Module .\samples\FamilyTree
# create a PowerShell drive.
new-psdrive -name Austin -psprovider SHiPS -root 'FamilyTree#Austin'
cd Austin:
dir
cd Ben
dir
The output looks like below.
PS Austin:\> dir
Container: Microsoft.PowerShell.SHiPS\SHiPS::FamilyTree#Austin
Type Name
---- ----
+ Ben
. Bill
PS Austin:\> cd .\Ben\
PS Austin:\Ben> dir
Container: Microsoft.PowerShell.SHiPS\SHiPS::FamilyTree#Austin
Type Name
---- ----
. Chris
. Cathy
PS Austin:\Ben> dir | %{$_.Data}
Name DOB Gender
---- --- ------
Chris 5034 M
Cathy 5050 F
In fact, we can create a drive at any level. Let's say we are interested in Ben only, we can do something like this:
new-psdrive -name son -psprovider SHiPS -root 'FamilyTree#Ben'
cd son:
dir
In addition, this can be useful for the isolated testing.
See more samples under sample folder to try out.
If you'd like to try out writing a SHiPS-based provider in PowerShell, we recommend reviewing the getting started documentation.
See here for design details.
Please follow the PowerShell Contribution Guide for how to contribute.
SHiPS is under the MIT license.