Wenn Sie auf einem Dateiserver Ordner umziehen müssen, kann das Anpassen der Freigaben auf untergeordneten Ordnern sehr aufwändig werden, z.B. wenn es sich um eine große Menge von Home-Shares handelt. Einfacher als über die GUI geht es, wenn Sie die Registry-Schlüssel unter HKEY_LocalMachine\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares\ anpassen. Alternativ können einfach die folgende Powershell-Funktion verwenden, die einen gegebenen Pfad in dem Registry-Schlüssel durch einen neuen ersetzt. Da es sich um eine reine Musterersetzung handelt, können Sie beliebige Teilpfade ersetzen lassen.
function Replace-SharePath
{
<#
.SYNOPSIS
Replace the Filesystem-Path of a Share
.Description
Replace-Sharepath can change the Filesystem-Path of shares. This can be helpful if you need to move
Files to a new Drive or have to move files to a subfolder and you have multiple Shares to touch. The
Script will change the given String into the new string, so all shares under the given Path will be
affected.
.EXAMPLE
To move Files from C:\Shares to D:\NewSharesFolder:
Replace-SharePath -Path c:\Shares -NewPath D:\NewSharesFolder
#>
param(
[ValidateScript({ if ( ! ( Test-Path -path $_ -PathType Container )) {Throw "Bitte den Quellpfad prüfen!"}; $true })]
[Parameter(mandatory=$true)]
# The Path to Change.
$Path,
[ValidateScript({ if ( ! ( Test-Path -path $_ -PathType Container )) {Throw "Bitte den Quellpfad prüfen!"}; $true })]
[Parameter(mandatory=$true)]
# The New Path
$Newpath
)
$path = $Path.Replace('\','\\')
$Newpath = $Newpath.Replace('\','\')
$ShareList = Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares\
ForEach ( $Share in $ShareList.Property )
{
Get-ItemProperty -Path $ShareList.pspath -Name $share
$newValue = ( Get-ItemProperty -Path $ShareList.pspath -Name $share ).$Share -replace "(^Path=)($path)","Path=$newpath"
Set-ItemProperty -Path $ShareList.pspath -Name $Share -Value $Newvalue -PassThru
}
}