derwowusste
Goto Top

Windows 8.1 auf 10 Upgrade - Migration von angepinnten Kacheln und Explorer-Favoriten

Moin Kollegen.

Nach Testupgrades von 8.1 auf 10 fallen 2 Dinge unangenehm auf:

1 Die angepinnten Kacheln fehlen komplett
2 Die angepinnten Favoriten im Windows-Explorer (%userprofile%\Links) werden zwar migriert, aber deren Namen ändern sich teilweise (auf den Namen des Linkzieles) und lassen sich nicht mehr umbenennen

Zu 1: Hat hier schon jemand eine Routine für die Migration der Kacheln parat?
Zu 2 gibt es vermutlich keine Lösung. Ich werde es MS melden, denn das Verhalten ist dämlich

Content-Key: 279159

Url: https://administrator.de/contentid/279159

Ausgedruckt am: 29.03.2024 um 08:03 Uhr

Mitglied: DerWoWusste
DerWoWusste 05.08.2015, aktualisiert am 06.08.2015 um 16:16:38 Uhr
Goto Top
1 wird wohl auf ein Anmeldeskript hinauslaufen, das die Link im alten Ordner analysiert, siehe hier http://www.computerhope.com/forum/index.php?topic=80659.0 und dann anpinnt, siehe https://gallery.technet.microsoft.com/scriptcenter/Script-to-pin-items-t ...
Wenn ich's denn einsetzen sollte, stelle ich es hier rein.
Mitglied: DerWoWusste
DerWoWusste 02.09.2015 um 15:07:38 Uhr
Goto Top
Ich habe nun ein Powershellskript dafür:

Import-Module "\\server\share\PinItemToStartMenu.psm1"  
Get-ChildItem -Path "$env:APPDATA\Microsoft\Windows\Start Menu\programs" -Filter *.lnk | % {server\share\Get-Shortcut.ps1 -Path $_.FullName} |  % {Set-OSCPin -Path $_.TargetPath}  
Hierbei ist PinItemToStartMenu.psm1 von https://gallery.technet.microsoft.com/scriptcenter/Script-to-pin-items-t ... verwendet worden und ebenso folgender Code "Get-Shortcut.ps1":
Param(
	[Parameter(Mandatory=$True, ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True, Position=0)][ValidateNotNull()]
	[string[]]$Path
)
Begin {
	$Shell = New-Object -ComObject WScript.Shell
	$Installer = New-Object -ComObject WindowsInstaller.Installer
}
Process {
	$Path | ForEach-Object {
		If (Test-Path -Path $_ -PathType Leaf) {
			$Shortcut = $Shell.CreateShortcut($_) | Select-Object -Property `
				Name,
				*,
				@{Name="IsAdvertised"; Expression={$False}},  
				AdvertisedTargetPath,
				@{Name="TargetExists"; Expression={$False}},  
				Error
			$Shortcut.Name = [IO.Path]::GetFileName($_)
			If ([string]::IsNullOrEmpty($Shortcut.TargetPath)) {
				$Shortcut.Error = "Not a valid shortcut."  
			} ElseIf ($Shortcut.TargetPath.ToUpper().StartsWith("${ENV:Systemroot}\Installer\".ToUpper())) {  
				$Shortcut.IsAdvertised = $True
				Try {
					$ShortcutTarget = $Installer.GetType().InvokeMember("ShortcutTarget", "GetProperty", $Null, $Installer, $_)  
					$StringData = 1, 3 | % {$ShortcutTarget.GetType().InvokeMember("StringData", "GetProperty", $Null, $ShortcutTarget, $_)}  
					$Shortcut.AdvertisedTargetPath = $Installer.GetType().InvokeMember("ComponentPath", "GetProperty", $Null, $Installer, $StringData)  
				} Catch {
					$Shortcut.Error = "Advertised product not installed."  
				}
			}
			$Shortcut.TargetExists = ![string]::IsNullOrEmpty($Shortcut.TargetPath) -And ((Get-Item -Path $Shortcut.TargetPath -ErrorAction SilentlyContinue) -ne $Null)
			$Shortcut | Write-Output
		} Else {
			"Shortcut '$_' not found!" | Write-Error  
		}
	}
}
End {
}