При использовании SCCM необходимо удалить папку в текущем профиле зарегистрированного пользователя, следовательно, PowerShell для просмотра «C: \ users», чтобы получить пользователей и прокрутить их - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть скрипт:

$TeamsPath = [System.IO.Path]::Combine($env:LOCALAPPDATA, 'Microsoft', 'Teams')
$TeamsUpdateExePath = [System.IO.Path]::Combine($env:LOCALAPPDATA, 'Microsoft', 'Teams', 'Update.exe')

try
{
    if (Test-Path -Path $TeamsUpdateExePath) {
        Write-Host "Uninstalling Teams process"

        # Uninstall app
        $proc = Start-Process -FilePath $TeamsUpdateExePath -ArgumentList "-uninstall -s" -PassThru
        $proc.WaitForExit()
    }
    if (Test-Path -Path $TeamsPath) {
        Write-Host "Deleting Teams directory"
        Remove-Item –Path $TeamsPath -Recurse
    }
}
catch
{
    Write-Error -ErrorRecord $_
    exit /b 1
}

Он отлично работает, если работает как текущий пользователь.Проблема в том, что SCCM запускает его как учетную запись SYSTEM, поэтому папка не удаляется.

Есть ли способ просмотреть имя папки в "C: \ users \" и, основываясь на именах, установить для переменной путь соответственно Start-Process?ИЛИ все, что может дать мне имя текущего зарегистрированного пользователя тоже отлично работает.Мне нужно избавиться от $ env: LOCALAPPDATA и добавить что-то еще, что я не могу придумать.

1 Ответ

0 голосов
/ 07 декабря 2018
$users = Get-ChildItem C:\Users
foreach($user in $users){
    $TeamsPath = [System.IO.Path]::Combine($user.FullName, 'AppData', 'Local', 'Microsoft', 'Teams')
    $TeamsUpdateExePath = [System.IO.Path]::Combine($user.FullName, 'AppData', 'Local', 'Microsoft', 'Teams', 'Update.exe')

    $teamsPathCorrect = Test-Path $TeamsPath
    $TeamsUpdatePathCorrect = Test-Path $TeamsUpdateExePath

    if($TeamsUpdatePathCorrect){
        try{
            Write-Host "Uninstalling Teams process"

            # Uninstall app
            $proc = Start-Process -FilePath $TeamsUpdateExePath -ArgumentList "-uninstall -s" -PassThru
            $proc.WaitForExit()
        }catch{
            Write-Error -ErrorRecord $_
            exit /b 1
        }
    }
    if($TeamsPathCorrect){
        try{
            Write-Host "Deleting Teams directory"
            Remove-Item –Path $TeamsPath -Recurse
        }catch{
            Write-Error -ErrorRecord $_
            exit /b 1
        }
    }
}

Это может помочь вам.Это проверит все папки / пользователи в C: \ Users и каждый найденный найдет существующие команды Microsoft, обновит и удалит соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...