Scripting av Windows 7 Libraries

Gjennom et prosjekt jeg deltar fikk vi behov for å scripte bibliotekene i Windows 7 (Libraries eller Bibliotek om du vil). Det viste seg at dette ikke var direkte tilgjenglig i Powershell, men at funksjonaliteten lå i shell32.dll med eksemplene i C. Alt lå an til at vi måtte benytte p/invoke i Powershell – noe man selvsagt kan gjøre. Heldigvis hadde noen fikset en .NET applikasjon, og jeg benyttet dll filene derfra, og jobben ble mye mindre 🙂

Denne gangen prøver jeg CodePlex, så du kan laste ned siste versjon av scriptet herfra:  http://windowslibrariespsh.codeplex.com

Release Notes

Short install guide:
(Extract to one of your folders given in $ENV:PSModulePath to simplify usage.)
Steps to install to your Modules folder:
Extract content from zip file to
~/documents/windowspowershell/modules/Windows7Library
If you don`t have the Modules folder in your WindowsPowershell folder, just create it.
From inside your Powershell session type the following command:
Import-Module Windows7Library


PLEASE NOTE
If this fails, please check that you allow scripts to run. If you demand Signed scripts, this script is not signed.
Also note that you might have to Unblock the file (as the file is downloaded from the Internet).
This should be done on the file Windows7Library.psm1 that you just extracted. (Right-Click the file, Properties and Unblock)


The commands inside the module is:
*Get-Library
*Add-Library
*Get-LibraryFolder
*Set-LibraryFolder
*Add-LibraryFolder
*Remove-LibraryFolder
*Get-KnownFolder

How to use?

Get-KnownFolder

To see all the knownfolders:
Get-KnownFolder -list
To get the path to the Documents Library
(Get-KnownFolder "DocumentsLibrary").Path

Get-Library

To read the Documents Library object:
$library=Get-Library (Get-KnownFolder "DocumentsLibrary").Path
Your could now play with the Library object:
$library | get-member

Get-LibraryFolder

Returns a list of the defined library folders
Get-LibraryFolder (Get-KnownFolder "DocumentsLibrary").Path

Add-LibraryFolder

Adds an path to the library
Add-LibraryFolder -LibraryPath(Get-KnownFolder "DocumentsLibrary").Path "\\server\share\folder"

Remove-LibraryFolder

Removes an defined library folder
Remove-LibraryFolder -LibraryPath (Get-KnownFolder "DocumentsLibrary").Path "\\server\share\folder"

Set-LibraryFolder

Set-LibraryFolder lets you define the default save folder for the library (note that the folder must be included in the library)
Set-LibraryFolder -LibraryPath (Get-KnownFolder "DocumentsLibrary").Path -DefaultSaveFolder "c:\docs"

Add-Library

With Add-Library you could create your own Libraries
Add-Library -Name "My Own Library" -Path "c:\users\user\Documents\"
(note that path here is where to store the library file (library-ms)

Have fun with this, and please, let me know of any improvments 🙂