2016-12-03 17 views
-3

Мы недавно начали развертывать коробки 2016 на моем месте работы, а часть процесса, который я сейчас просматриваю, делает пользовательские профили максимально удобными.Неожиданный результат из файла удаления пакета пакетного файла Сервер 2016

Как вы, вероятно, знаете, что сервер 2016 имеет конфигурацию стартового меню Windows 10, которая, к сожалению, для моей конкретной ситуации, позволяет администраторам, PowerShell и т. Д. Очень легко добраться до наших клиентов, которые не смогут их запускать, но я хотел бы избежать возможного отрицательного впечатления/неправильного представления о том, что что-то не так с сервером, которое они могут иметь, если они пытаются запустить любой из этих ярлыков, поэтому ....

Я пытаюсь получить командный файл вместе, что я могу запустить либо войти в систему как каждый пользователь, либо из моего собственного профиля администратора домена и удалить папки из роуминга appdata и localhost appdata, которые содержат эти ярлыки ... Я бы не хотел, клиента.

Вот что у меня есть до сих пор, что не работает отлично. Я собрал это вместе из разных сценариев, с которыми сталкивался, поскольку я относительно неопытен в кодировании этих ... в моей тестовой среде это затрагивает несколько профилей, хотя я не понимал, что это происходит, и он действительно работает только в папке быстрого доступа WinX ... он удаляет это, но остальные папки остаются ...

Любая помощь при расшифровке моей некомпетентности здесь был бы очень благодарен.

@ECHO OFF 

:START 
cls 
cd %USERPROFILE% 
cd.. 
set profiles=%cd% 

for /f "tokens=* delims= " %%u in ('dir /b/ad') do (

cls 
title Removing %%u Unnecessary shortcuts from roaming. . . 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows System" echo Deleting.... 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows System" cd "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows System" 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows System" del *.* /F /S /Q /A: R /A: H /A: A 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows System" rmdir /s /q "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows System" 

cls 
title Removing %%u More unnecessary shortcuts from roaming. . . 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows Administrative Tools" echo Deleting.... 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows Administrative Tools" cd "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows Administrative Tools" 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows Administrative Tools" del *.* /F /S /Q /A: R /A: H /A: A 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows Administrative Tools" rmdir /s /q "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows Administrative Tools" 

cls 
title Removing %%u Even more unnecessary shortcuts from roaming. . . 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell" echo Deleting.... 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell" cd "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell" 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell" del *.* /F /S /Q /A: R /A: H /A: A 
if exist "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell" rmdir /s /q "%profiles%\%%u\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell" 

cls 
title Removing %%u Unnecessary shortcuts from WinX Menu. . . 
if exist "%profiles%\%%u\AppData\Local\Microsoft\Windows\WinX\Group3" echo Deleting.... 
if exist "%profiles%\%%u\AppData\Local\Microsoft\Windows\WinX\Group3" cd "%profiles%\%%u\AppData\Local\Microsoft\Windows\WinX\Group3" 
if exist "%profiles%\%%u\AppData\Local\Microsoft\Windows\WinX\Group3" del *.* /F /S /Q /A: R /A: H /A: A 
if exist "%profiles%\%%u\AppData\Local\Microsoft\Windows\WinX\Group3" rmdir /s /q "%profiles%\%%u\AppData\Local\Microsoft\Windows\WinX\Group3" 

) 

cls 
goto END 

:END 
exit 
+3

Ваш код - беспорядок. Пожалуйста, отредактируйте его правильно. Если вы не знаете, как это сделать, нажмите? над верхним правом углом текстовой области и прочитать предоставленную информацию. Кроме того, FWIW, ваш подход совершенно неверен. Вместо этого вы должны использовать групповую политику; он удалит элементы меню для пользователей, не являющихся администраторами, без удаления чего-либо вручную. Это также сделает эти пункты меню доступными для администраторов, снова автоматически. –

+0

Чтобы прояснить проблему, используя групповой подход: уже установлены политики, которые не позволяют пользователям использовать эти ярлыки. То, что он не делает, это удалить их из видимости/отменить их с самого начала. Мне нужно вручную отменить запуск и вручную войти и либо изменить разрешения NTFS на папки, содержащие ярлыки, либо удалить их, чтобы обеспечить среду, к которой я стремлюсь для клиентов. Как вы можете себе представить, это займет много времени с 30 + пользователями на каждом сервере. – therealslimbrady

+0

Вы все просто отрицательно голосуете по моему вопросу, потому что у вас нет ответа или в чем проблема? – therealslimbrady

ответ

0

Мне удалось найти решение, которое работает в настоящее время с использованием ica ЦБС. Удаление разрешений из папок с ярлыками делает их пустыми. Я уверен, что что-то, не требующее ввода, может быть взломанным в PowerShell, но у меня нет ни опыта, ни времени, чтобы получить что-то более интересное. Это работает для моей ситуации, и я надеюсь, что это может помочь кому-то еще там.

@echo off 

echo Press the Enter Key To Begin 
pause > NUL 


::first I had to use takeown for just this folder as it was denying any modification of permissions I was attempting with icacls 

takeown /f "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools" /R /A 

::Next I go in and set the permissions for the shortcuts in ProgramData which are not profile specific and have "Everyone" and "Users" included by default. 
::I have used asterisks for security reasons but they are not part of the live code. 

icacls "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools" /inheritance:r /remove:g Everyone 
icacls "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools" /remove:g Users 
icacls "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools" /grant "Administrators:(CI)(OI)(F)" 
icacls "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools" /grant "*****\Domain Admins:(CI)(OI)(F)" 
icacls "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools" /grant "*****\Domain Admins:(CI)(OI)(F)" 
icacls "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools" /grant "*****\*** Support:(CI)(OI)(M)" 

cls 

goto Second 

:Second 

set /p USER=What is the name of the Userprofile being modified? 
del "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Server Manager.lnk" 
icacls "C:\Users\%USER%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools" /inheritance:r /remove:g %USER% 
icacls "C:\Users\%USER%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools" /inheritance:r /remove:g %USER% 
icacls "C:\Users\%USER%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell" /inheritance:r /remove:g %USER% 
icacls "C:\Users\%USER%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools" /inheritance:r /remove:g %USER% 
icacls "C:\Users\%USER%\AppData\Local\Microsoft\Windows\WinX\Group3" /inheritance:r /remove:g %USER% 
del "C:\Users\%USER%\AppData\Local\Microsoft\Windows\WinX\Group2\4 - Control Panel.lnk" 


echo. 
echo. 
echo Operation completed. 

goto Second 

End 

Забавных лакомый я обнаружил после разочарований 10-минутного периода замешательства .... Несмотря на все, что в свойствах ярлыка для панели управления с четким указанием названия ярлыка «Control Panel.lnk» фактический имя ярлыка: «4 - Control Panel.lnk». Не знаете, насколько универсальна эта схема именования, но это то, что было на сервере, над которым я работал, и, похоже, это имя для последующих серверов, на которых я запускал свою партию файл включен.