
위 작업 수행에 관한 지침을 찾고 있습니다.
내 Powershell 스크립트는 아래와 같습니다. 스크립트는 현재 명명된 특정 앱 하나를 제거합니다.
$AppsToDelete="*Microsoft.WindowsReadingList*"
Foreach ($AppName in $AppsToDelete)
{
get-appxprovisionedpackage -online | where packagename -like $AppName | remove-appxprovisionedpackage -Online
Get-AppxPackage -name $AppName -allusers | Remove-AppxPackage
}
스크립트를 실행하기 위해 SCCM2012에서 사용하는 프로그램은 다음과 같습니다.
PowerShell.exe -ExecutionPolicy UnRestricted -File .\delappsreadinglistonly.ps1
SCCM 2012에서 프로그램을 만들고 클라이언트에 배포했습니다.
프로그램이 시스템이 아닌 사용자로 실행되도록 설정되었습니다.
EXECMGR.log 파일은 스크립트가 클라이언트에 의해 수신되어 성공적으로 실행되었음을 알려줍니다. 종료 코드 = 0, 실행 상태는 성공입니다.
즉, 읽기 목록 타일은 여전히 ( Metro ?) 시작 화면에 있고, 읽기 목록 앱은 여전히 앱 이름 알파벳순 목록에 나타나며 실행될 수 있으며 C:\program files\windowsapps\에 다양한 폴더가 여전히 존재합니다.
포인터를 주시면 감사하겠습니다.
답변1
귀하의 스크립트에 두 가지 잠재적인 문제가 있는 것으로 보입니다.
- 호출에는 권한
-AppxProvisionedPackage
상승이 필요할 가능성이 높습니다. 사용자로 스크립트를 실행하면 예외가 발생할 수 있습니다. - 호출하려면
Get-AppxPackage -allusers
관리자 권한이 필요합니다. 문서읽기 의 경우-allusers
"이 매개변수를 사용하려면 관리자 권한을 사용하여 명령을 실행해야 합니다."
귀하의 목표가 정확히 무엇인지는 확실하지 않습니다. Windows 8.1 시작 화면에서 타일이 어지러워지는 경우를 처리하는 방법은 다음과 같습니다.
- 다음 특성을 가진 SCCM 애플리케이션을 생성합니다.
- 설치 프로그램 없음
Remove-AppxPackage
일반적인 앱 목록을 요구하는 제거 프로그램- 해당 앱 목록에 대한 감지 스크립트
- 영향을 받는 대상에 제거 작업을 사용하여 애플리케이션을 배포합니다.사용자.
제가 이 전략을 사용하는 이유는 필요한 것으로 판명될 경우 향후 특정 사용자가 해당 앱 중 어떤 앱을 사용할 수 있는지 보다 정밀하게 설정하기 때문입니다.
제거를 위해 이 애플리케이션이 배포된 사용자가 로그인하면 CcmExec
결국 애플리케이션을 감지하고 제거 명령을 호출합니다. 제거 명령이 호출된 후에는 응용 프로그램이 더 이상 사용자에게 표시되거나 사용할 수 없어야 합니다.
제거-Application.ps1
다음은 제가 사용하는 제거 스크립트의 본문입니다. 설치(제거)를 위해 호출되는 PowerShell 스크립트를 설정하는 방법에 주의해야 합니다.종료 코드는 스크립트에서 안정적으로 가져오기가 약간 까다롭습니다..
$appList = 'Microsoft.BingSports',
# ...longlist of other apps...
'Microsoft.WindowsReadingList'
Get-AppxPackage |
? { $_.Name -in $appList } |
% { Remove-AppxPackage $_.PackageFullName }
감지-Application.ps1
아래는 제가 사용하는 탐지 스크립트의 본문입니다. PowerShell 감지 스크립트를 사용하는 데는 몇 가지 함정이 있습니다.
- 클라이언트
xSigned
설정 및 로그에-ByPass
. - 탐지 스크립트 출력의 의미는 난해하고비공식적으로만 문서화됨, 그러나 IME는 신뢰할 수 있습니다.
- 다음을 사용하여 PowerShell 감지 스크립트를 요리해야 합니다.Adam Meltzer의 해결 방법그들이 일하게 하려고요.
- 당신은 또한 적어도 알고 있어야합니다PowerShell 탐지 스크립트가 실행되는 컨텍스트와 관련된 몇 가지 기이함.
모든 작업을 수행하면 PowerShell 감지 스크립트가 이와 같이 복잡하거나 외과적이거나 비전통적인 감지에 훌륭하게 작동합니다.
$appList = 'Microsoft.BingSports',
# ...longlist of other apps...
'Microsoft.WindowsReadingList'
Get-AppxPackage |
? { $_.Name -in $appList }