2016-05-09 8 views
1

Я создал базовую линию для развертываний Windows 10, которая устанавливает StartMenu в макет по умолчанию. (Я должен был сделать это базовым в связи с некоторой внутренней политикой, поэтому не спрашивайте :-).)Windows 10 Startmenu Layout Baseline, tile missing

Эта базовая линия создает XML-файл с данными, взятыми из предыдущего экспорта Startmenu через Powershell. Скрипт работает и делает то, что он должен делать без проблем. Но когда я вхожу в систему с новой учетной записью, в стартовом меню отсутствует IE-плитка. Сценарий создает отсутствующий ярлык в «% ALLUSERSPROFILE% \ Microsoft \ Windows \ Start Menu \ Programs», как я читал на нескольких других страницах. Но это исправление, похоже, не работает для меня.

Этот скрипт также удаляет приветственное видео для Windows 10 для новых пользователей.

Это сценарий:

$key = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" 
$filecontent = @" 
<LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification"> 
    <LayoutOptions StartTileGroupCellWidth="6" /> 
    <DefaultLayoutOverride> 
    <StartLayoutCollection> 
     <defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout"> 
     <start:Group Name="General Apps" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
      <start:Tile Size="1x1" Column="2" Row="1" AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" /> 
      <start:Tile Size="1x1" Column="3" Row="1" AppUserModelID="Microsoft.Windows.Cortana_cw5n1h2txyewy!CortanaUI" /> 
      <start:DesktopApplicationTile Size="1x1" Column="2" Row="0" DesktopApplicationID="Microsoft.SoftwareCenter.DesktopToasts" /> 
      <start:Tile Size="1x1" Column="4" Row="1" AppUserModelID="Microsoft.WindowsStore_8wekyb3d8bbwe!App" /> 
      <start:DesktopApplicationTile Size="1x1" Column="4" Row="0" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\SnippingTool.exe" /> 
      <start:Tile Size="1x1" Column="5" Row="0" AppUserModelID="Microsoft.People_8wekyb3d8bbwe!x4c7a3b7dy2188y46d4ya362y19ac5a5805e5x" /> 
      <start:Tile Size="1x1" Column="3" Row="0" AppUserModelID="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" /> 
      <start:DesktopApplicationTile Size="1x1" Column="0" Row="0" DesktopApplicationID="Microsoft.InternetExplorer.Default" /> 
     </start:Group> 
     <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
      <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="Microsoft.BingWeather_8wekyb3d8bbwe!App" /> 
      <start:Tile Size="2x2" Column="2" Row="0" AppUserModelID="Microsoft.BingNews_8wekyb3d8bbwe!AppexNews" /> 
     </start:Group> 
     <start:Group Name="Remote Tools" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
      <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Windows.RemoteDesktop" /> 
      <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Juniper.Junos Pulse.UserInterface" /> 
     </start:Group> 
     <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
      <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" /> 
      <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Microsoft.Office.WINWORD.EXE.15" /> 
      <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="Microsoft.Office.EXCEL.EXE.15" /> 
      <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="Microsoft.Office.lync.exe.15" /> 
      <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationID="Microsoft.Office.ONENOTE.EXE.15" /> 
      <start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationID="Microsoft.Office.POWERPNT.EXE.15" /> 
     </start:Group> 
     </defaultlayout:StartLayout> 
    </StartLayoutCollection> 
    </DefaultLayoutOverride> 
</LayoutModificationTemplate> 
"@ 

<# Remove Weclome Video #> 

$res = Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -ErrorAction SilentlyContinue 
if (-not $res) 
    {New-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -value "0" -PropertyType "DWord"} 
else 
    {Set-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -value "0"} 

<# Load XML Data #> 
New-Item $env:ProgramData\testing\menulayout -ItemType directory 
echo $filecontent |out-file $env:ProgramData\lmco\menulayout\LayoutModification.xml 
Import-StartLayout -LayoutPath $env:ProgramData\lmco\menulayout\LayoutModification.xml -MountPath $env:SystemDrive\ 

<# Add IE Shorcut #> 
$TargetFile = "C:\Program Files\Internet Explorer\iexplore.exe" 
$ShortcutFile = "$env:ALLUSERSPROFILE\Microsoft\Windows\Start Menu\Programs\Internet Explorer 11.lnk" 
$WScriptShell = New-Object -ComObject WScript.Shell 
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile) 
$Shortcut.TargetPath = $TargetFile 
$Shortcut.Save() 

<# Cleanup #> 
Remove-Item $env:ProgramData\testing\menulayout -Recurse -Force 

Просто хотел бы знать, если кто-то мог это проверить и посмотреть, если они получают тот же результат. Или даже если кто-нибудь нашел, как получить пропущенные плитки, чтобы показать.

Если я установил плитки как жестко связанный ярлык, используя что-то вроде <start:DesktopApplicationTile Size="1x1" Column="0" Row="0" DesktopApplicationID="%appdata%\Microsoft\Windows\Start Menu\Programs\Internet Explorer.lnk" /> Я в конечном итоге нарушаю старт для пользователя целиком.

Я также обнаружил, что время от времени Store Tile исчезает с самого начала, когда я вношу изменения в строку IE, поэтому получаю некоторые странные результаты.

Также, когда я запускаю экспорт-startlayout на пользователя, который только что вошел в систему, я вижу, что в файле startmenu xml нет записи о недостающих фрагментах.

И я также попробовал это с использованием фактического XML-файла для импорта, и я получаю тот же результат, который запускает 2 строки вручную.

Это окончательная версия сценария. Закончился, не используя его печально, но было приятно заставить его работать.

<# Detect Office Version #> 
    $office2013 = (Get-ItemProperty "HKLM:\Software\Microsoft\Office\15.0\Outlook" -ErrorAction SilentlyContinue) 
    $office2016 = (Get-ItemProperty "HKLM:\Software\Microsoft\Office\16.0\Outlook" -ErrorAction SilentlyContinue) 
    if($office2013) {$officeversion = "2013"} 
    if($office2016) {$officeversion = "2016"} 

    <# Reg Values #> 
    $key = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" 

    <# XML Data 2016 #> 
    if ($officeversion -eq 2016) { 
    $filecontent = @" 
    <LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification"> 
     <LayoutOptions StartTileGroupCellWidth="6" /> 
     <DefaultLayoutOverride> 
     <StartLayoutCollection> 
      <defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout"> 
      <start:Group Name="General Apps" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
       <start:Tile Size="1x1" Column="2" Row="1" AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" /> 
       <start:Tile Size="1x1" Column="3" Row="1" AppUserModelID="Microsoft.Windows.Cortana_cw5n1h2txyewy!CortanaUI" /> 
       <start:DesktopApplicationTile Size="1x1" Column="2" Row="0" DesktopApplicationID="Microsoft.SoftwareCenter.DesktopToasts" /> 
       <start:Tile Size="1x1" Column="4" Row="1" AppUserModelID="Microsoft.WindowsStore_8wekyb3d8bbwe!App" /> 
       <start:DesktopApplicationTile Size="1x1" Column="4" Row="0" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\SnippingTool.exe" /> 
       <start:Tile Size="1x1" Column="5" Row="0" AppUserModelID="Microsoft.People_8wekyb3d8bbwe!x4c7a3b7dy2188y46d4ya362y19ac5a5805e5x" /> 
       <start:Tile Size="1x1" Column="3" Row="0" AppUserModelID="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" /> 
       <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="{6D809377-6AF0-444B-8957-A3773F02200E}\Internet Explorer\iexplore.exe" /> 
      </start:Group> 
      <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
       <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="Microsoft.BingWeather_8wekyb3d8bbwe!App" /> 
       <start:Tile Size="2x2" Column="2" Row="0" AppUserModelID="Microsoft.BingNews_8wekyb3d8bbwe!AppexNews" /> 
      </start:Group> 
      <start:Group Name="Remote Tools" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
       <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Windows.RemoteDesktop" /> 
       <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Juniper.Junos Pulse.UserInterface" /> 
      </start:Group> 
      <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
       <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" /> 
       <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Microsoft.Office.WINWORD.EXE.15" /> 
       <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="Microsoft.Office.EXCEL.EXE.15" /> 
       <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="Microsoft.Office.lync.exe.15" /> 
       <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationID="Microsoft.Office.ONENOTE.EXE.15" /> 
       <start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationID="Microsoft.Office.POWERPNT.EXE.15" /> 
      </start:Group> 
      </defaultlayout:StartLayout> 
     </StartLayoutCollection> 
     </DefaultLayoutOverride> 
    </LayoutModificationTemplate> 
    "@ 
    } 

    <# XML Data 2013 #> 
    if ($officeversion -eq 2013) { 
    $filecontent = @" 
    <LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification"> 
     <LayoutOptions StartTileGroupCellWidth="6" /> 
     <DefaultLayoutOverride> 
     <StartLayoutCollection> 
      <defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout"> 
      <start:Group Name="General Apps" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
       <start:Tile Size="1x1" Column="2" Row="1" AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" /> 
       <start:Tile Size="1x1" Column="3" Row="1" AppUserModelID="Microsoft.Windows.Cortana_cw5n1h2txyewy!CortanaUI" /> 
       <start:DesktopApplicationTile Size="1x1" Column="2" Row="0" DesktopApplicationID="Microsoft.SoftwareCenter.DesktopToasts" /> 
       <start:Tile Size="1x1" Column="4" Row="1" AppUserModelID="Microsoft.WindowsStore_8wekyb3d8bbwe!App" /> 
       <start:DesktopApplicationTile Size="1x1" Column="4" Row="0" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\SnippingTool.exe" /> 
       <start:Tile Size="1x1" Column="5" Row="0" AppUserModelID="Microsoft.People_8wekyb3d8bbwe!x4c7a3b7dy2188y46d4ya362y19ac5a5805e5x" /> 
       <start:Tile Size="1x1" Column="3" Row="0" AppUserModelID="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" /> 
       <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="{6D809377-6AF0-444B-8957-A3773F02200E}\Internet Explorer\iexplore.exe" /> 
      </start:Group> 
      <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
       <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="Microsoft.BingWeather_8wekyb3d8bbwe!App" /> 
       <start:Tile Size="2x2" Column="2" Row="0" AppUserModelID="Microsoft.BingNews_8wekyb3d8bbwe!AppexNews" /> 
      </start:Group> 
      <start:Group Name="Remote Tools" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
       <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Windows.RemoteDesktop" /> 
       <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Juniper.Junos Pulse.UserInterface" /> 
      </start:Group> 
      <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"> 
       <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" /> 
       <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\WINWORD.EXE" /> 
       <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\EXCEL.EXE" /> 
       <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\lync.exe" /> 
       <start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\POWERPNT.EXE" /> 
       <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\ONENOTE.EXE" /> 
      </start:Group> 
      </defaultlayout:StartLayout> 
     </StartLayoutCollection> 
     </DefaultLayoutOverride> 
    </LayoutModificationTemplate> 
    "@ 
    } 

    <# Remove Weclome Video #> 
    $res = Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -ErrorAction SilentlyContinue 
    if (-not $res) 
     {New-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -value "0" -PropertyType "DWord"} 
    else 
     {Set-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -value "0"} 

    <# Load XML Data #> 
    $folderexist = (test-path $env:ProgramData\lmco\) 
    if ($folderexist) 
     {New-Item $env:ProgramData\lmco\menulayout -ItemType directory} 
    else 
     {New-Item $env:ProgramData\LMCO\ -ItemType directory; New-Item $env:ProgramData\lmco\menulayout -ItemType directory} 

    echo $filecontent |out-file $env:ProgramData\lmco\menulayout\LayoutModification.xml 
    Import-StartLayout -LayoutPath $env:ProgramData\lmco\menulayout\LayoutModification.xml -MountPath $env:SystemDrive\ 

    <# Add IE Shorcut #> 
    $TargetFile = "C:\Program Files\Internet Explorer\iexplore.exe" 
    $ShortcutFile = "$env:ALLUSERSPROFILE\Microsoft\Windows\Start Menu\Programs\Internet Explorer.lnk" 
    $WScriptShell = New-Object -ComObject WScript.Shell 
    $Shortcut = $WScriptShell.CreateShortcut($ShortcutFile) 
    $Shortcut.TargetPath = $TargetFile 
    $Shortcut.Save() 

    <# Cleanup #> 
    Remove-Item $env:ProgramData\lmco\menulayout -Recurse -Force 
+0

Я также подтвердил, что C: \ Users \ Default \ AppData \ Local \ Microsoft \ Windows \ Shell \ LayoutModification.xml имеет правильные детали, которые должны быть добавляющие ссылку IE. –

ответ

1

У меня были некоторые проблемы с IE в приложении самостоятельно. Насколько я понял, Microsoft.InternetExplorer.Default, похоже, не работает, и хотя некоторые руководства говорят, что Microsoft.Explorer.Default будет работать для IE, это вернется к опечатку в одной из оригинальных статей техно. Я получил его на работу, используя захваченный необщего AppID, который был

{6D809377-6AF0-444B-8957-A3773F02200E} \ Internet Explorer \ iexplore.exe

для 64Bit и

{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E} \ Internet Explorer \ iexplore.exe

для 32Bit. Вы можете получить этот идентификатор с помощью команды Powershell «Get-StartApps» для всех возможных программ:

Get-StartApps | где {$ _. Name -ilike 'Internet Explorer *'}

Чтобы получить только IE, если он когда-либо сломается.Как вы можете видеть here, это GUID для папки ProgramFilesx64 и x86. Существует также общий вариант для ProgramFiles ({905E63B6-C1BF-494E-B29C-65B732D3D21A}), но поскольку он не указан в Get-StartApps, он, вероятно, не работает.

Однако сначала это решение не работает через окна x64 и x86 с одним файлом, а во-вторых, похоже, что он может сломаться в какой-то момент. Это не очень вероятно, так как идентификаторы присутствуют, так как vista и изменение GUID нарушают большую совместимость, но я бы предпочел не полагаться на более неясный метод, если есть альтернатива.

Я поэтому решил для решения с файлом lnk. Если вы это сделаете, вы больше не сможете использовать DesktopApplicationID, но вместо этого DesktopApplicationLinkPath. Правильный синтаксис должен быть:

<start:DesktopApplicationTile Size="1x1" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Internet Explorer.lnk" /> 
+0

Спасибо Syberdoor, я попробовал параметр DesktopApplicationLinkPath, но это снова запустило меню запуска. Но до сих пор '{6D809377-6AF0-444B-8957-A3773F02200E} \ Internet Explorer \ iexplore.exe' выглядит хорошо, мы только развертываем x64 в моей организации, и если у нас x86 будет меньше 1% клиентов, так что мы можем управлять отсутствующим значком. Это может сломаться со следующим основным обновлением, но, по крайней мере, лучше, чем чистая плитка. –

+0

Странно, что ссылка не сработала для вас именно так. Я добавил 32Bit ID, а также метод для поиска этих идентификаторов. – Syberdoor

+0

Привет, эти идентификаторы приложений остаются неизменными между развертываниями, не так ли? Знаете ли вы, при каких обстоятельствах они будут меняться? (Я просто хочу убедиться, что при создании нескольких машин не будет никаких странных проблем.) – iank