2015-08-25 2 views
0

Я пытаюсь создать скрипт, который удаляет определенный пакет AppV. Проблема я имею пакет AppV устанавливается под локальным пользователем, который не имеет права администратора, поэтому я получаю сообщение:Удалить AppV-пакет с использованием учетных данных администратора

«Permission Denied»

Однако, когда я бегу сценарий как администратор и предоставить мои учетные данные, пакет AppV не отображается. Вот раздел кода, который я использую, чтобы перечислить и удалить пакет.

# Remove AppV version of inProcess 
     $allAppV = Get-AppvClientPackage 
     If ($allAppV.Count -ge 0) { 
      $i = 1 

    #This part lists the packages 
      Write-Host "List AppV packages" 
      ForEach($Package in $allAppV) { 
       Write-Host `t $i - $Package.Name 
      $i += 

    1 
      } 
    # Select which package to remove 
      $NumbertoRemove = Read-Host 

"Which one would you like to remove? Type 0 if none" 
     If ($NumbertoRemove -eq 0) { 
      Write-Host "Not removing any App-V Client Package" 
      $Global:More = $False 
     } 
     else { 
      If ($NumbertoRemove -le $allAppV.Count) { 
       $NumbertoRemove -= 1 
       Write-Host "Removing package" $allAppV[$NumbertoRemove].Name 
       $PackageToRemove = $allAppV[$NumbertoRemove] 
       If ($PackageToRemove.IsPublishedGlobally) 
        {Unpublish-AppvClientPackage $allAppV[$NumbertoRemove]} 

        # I need to provide admin credentials for this step 
        Remove-AppvClientPackage $allAppV[$NumbertoRemove] 
        Write-Host "AppV Client Package has been removed" 

Это то, на что похоже, когда я запускаю скрипт как локальный пользователь. Если я вхожу в 1, он попытается удалить inProcess, но получит отказ в разрешении. enter image description here

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

Мне нужно либо запустить скрипт как администратор, но указать пакеты Appv локального пользователя или предоставить учетные данные для шага remove-AppvClientPackages. Было бы предпочтительнее запрашивать учетные данные для удаления пакета. Спасибо

ответ

1

Используйте командлет Get-AppvClientPackage с ключом -All, это отобразит все пакеты AppV на компьютере, независимо от текущего пользователя. Для удаления пакета вам все равно потребуется запустить командлет с учетными данными администратора.

$allAppV = Get-AppvClientPackage -All 
+0

Спасибо, что сработали. Из прочтения это звучало как «-Всего переключателя было просто для публикации опубликованных и неопубликованных для пользователя. Я мало что знаю о AppV, но я думаю, вам просто нужно опубликовать его для пользователей, которым это нужно. Я все же хотел бы понять способ сделать это, повысив права в нужное время, а не весь сценарий как Admin. – bbishopca