.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Redirect user folders to a new location
|
||||
|
||||
.EXAMPLE
|
||||
Set-KnownFolderPath -KnownFolder Desktop -Path "$env:SystemDrive:\Desktop"
|
||||
#>
|
||||
function Global:Set-KnownFolderPath
|
||||
{
|
||||
[CmdletBinding()]
|
||||
param
|
||||
(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[ValidateSet("Desktop", "Documents", "Downloads", "Music", "Pictures", "Videos")]
|
||||
[string]
|
||||
$KnownFolder,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]
|
||||
$Path
|
||||
)
|
||||
|
||||
$KnownFolders = @{
|
||||
"Desktop" = @("B4BFCC3A-DB2C-424C-B029-7FE99A87C641")
|
||||
"Documents" = @("FDD39AD0-238F-46AF-ADB4-6C85480369C7", "f42ee2d3-909f-4907-8871-4c22fc0bf756")
|
||||
"Downloads" = @("374DE290-123F-4565-9164-39C4925E467B", "7d83ee9b-2244-4e70-b1f5-5404642af1e4")
|
||||
"Music" = @("4BD8D571-6D19-48D3-BE97-422220080E43", "a0c69a99-21c8-4671-8703-7934162fcf1d")
|
||||
"Pictures" = @("33E28130-4E1E-4676-835A-98395C3BC3BB", "0ddd015d-b06c-45d5-8c4c-f59713854639")
|
||||
"Videos" = @("18989B1D-99B5-455B-841C-AB7C74E4DDFC", "35286a68-3c57-41a1-bbb1-0eae73d76c95")
|
||||
}
|
||||
|
||||
$Signature = @{
|
||||
Namespace = "WinAPI"
|
||||
Name = "KnownFolders"
|
||||
Language = "CSharp"
|
||||
CompilerParameters = $CompilerParameters
|
||||
MemberDefinition = @"
|
||||
[DllImport("shell32.dll")]
|
||||
public extern static int SHSetKnownFolderPath(ref Guid folderId, uint flags, IntPtr token, [MarshalAs(UnmanagedType.LPWStr)] string path);
|
||||
"@
|
||||
}
|
||||
if (-not ("WinAPI.KnownFolders" -as [type]))
|
||||
{
|
||||
Add-Type @Signature
|
||||
}
|
||||
|
||||
foreach ($GUID in $KnownFolders[$KnownFolder])
|
||||
{
|
||||
[WinAPI.KnownFolders]::SHSetKnownFolderPath([ref]$GUID, 0, 0, $Path)
|
||||
}
|
||||
(Get-Item -Path $Path -Force).Attributes = "ReadOnly"
|
||||
}
|
||||
Reference in New Issue
Block a user