Skip to content
Simple Hierarchy in PowerShell - developing PowerShell provider got so much easier
Branch: development
Clone or download
glennsarti and jianyunt Update DynamicSample example documentation (#126)
The DynamicSample example documentation incorrectly loads the wrong module script file, and therefore the
`New-PSDrive` command will fail.  This commit changes the example to use the correct text.
Latest commit 91762f5 Jan 28, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update issue template (#60) Oct 20, 2017
docs (GH-103) Convert all text encoding to UTF8 without BOM (#124) Dec 13, 2018
samples
src (GH-103) Convert all text encoding to UTF8 without BOM (#124) Dec 13, 2018
test (GH-103) Convert all text encoding to UTF8 without BOM (#124) Dec 13, 2018
tools
vs2015 (GH-103) Convert all text encoding to UTF8 without BOM (#124) Dec 13, 2018
.gitignore
.travis.yml Removing trailing whitespaces (#121) Oct 28, 2018
CHANGELOG.md
LICENSE.txt Initial commit for SHiPS Oct 12, 2017
README.md Removing trailing whitespaces (#121) Oct 28, 2018
ThirdPartyNotices.txt Initial commit for SHiPS Oct 12, 2017
appveyor.yml

README.md

Simple Hierarchy in PowerShell (SHiPS)

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.

Build Status

Development branch

AppVeyor (Windows) Travis CI (Linux / macOS)
av-image-dev tv-image-dev

Master branch

AppVeyor (Windows) Travis CI (Linux / macOS)
av-image-master tv-image-master

Nightly run Master branch

AppVeyor (Windows)
av-image-master-n

Supported Platform

Downloading the Source Code

git clone https://github.com/PowerShell/SHiPS.git

Building the Source Code

cd <yourclonefolder>\SHiPS\src\
# get the dotnet CLI tool
# and Windows10 SDK if you are running on Windows
.\bootstrap.ps1

# build SHiPS
.\build.ps1 Release

Installing SHiPS

  • 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

Running Unit Tests

Import-Module .\tools\setup.psm1
Invoke-SHiPSTest

Try It Out

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.

Get Started with Writing a PowerShell Provider

If you'd like to try out writing a SHiPS-based provider in PowerShell, we recommend reviewing the getting started documentation.

SHiPS Architecture

See here for design details.

FAQ

See known issues, FAQ, etc.

Developing and Contributing

Please follow the PowerShell Contribution Guide for how to contribute.

Legal and Licensing

SHiPS is under the MIT license.

You can’t perform that action at this time.