2016-12-03 11 views
-3

Google은 최근 내 자리에서 2016 개의 상자를 배포하기 시작했으며 현재 진행중인 과정 중 일부는 사용자 프로필을 최대한 사용자 친화적 인 것으로 만듭니다.폴더 삭제 일괄 처리 파일에서 예기치 않은 결과가 발생했습니다. 서버 2016

아마도 아시다시피 서버 2016에는 불행히도 내 특별한 상황에서 불행히도 관리 도구, PowerShell 등을 실행하기가 어려운 고객을 위해 쉽게 만들 수있는 Windows 10 시작 메뉴 구성이 있습니다. 그들이 그러한 단축키 중 하나를 실행하려고하면 서버에 어떤 문제가 있다는 부정적인 인상이나 오해를 피하기를 원합니다 ....

배치 파일을 얻으려고합니다. 함께 각 사용자 또는 내 자신의 도메인 관리자 프로필에서 로그인 할 수 있고이 단축키가 포함 된 appdata 로밍 및 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를 사용하여 당분간 작동하는 해결책을 찾을 수있었습니다. cls. 바로 가기 폴더에서 사용 권한을 제거하면 바로 가기 폴더가 사라집니다. 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 분 기간 후에 발견 "제어 Panel.lnk"실제입니다 바로 가기의 이름은 "4 - Control Panel.lnk"입니다. 이름 지정 체계가 얼마나 보편적인지는 확실치 않지만, 제가 작업하고있는 서버에 있었던 것이고 후속 서버의 이름 인 것 같습니다. 배치를 실행했습니다. 에 파일.