potshock
Goto Top

Edit: Powershell: Array durchläuft Schleife, genauere Fehlerangabe benötigt!

Hallo Powershell User,

ich brauche mal wieder Eure Unterstützung, da ich beim scripten wahrlich keine Leuchte bin face-wink.

Ich lasse per Powershell bei Windows 10 (1909) im Audit Modus sowohl Apps des gerade aktiven users (Administrator/root) als auch für alle zukuenftigen user entfernen.
Edit: Jetzt kommt es seit kurzem vor, dass beim Entfernen der Apps des gerade aktiven users Fehler auftreten.

Im Script werden Fehler beim Ausfuehren unterdrueckt, in eine Logdatei geschrieben und das Script faehrt fort:
#######################################################################################
$ErrorActionPreference = "SilentlyContinue"  
# Pfad zur Logdatei
$Log = "$env:SystemDrive\Users\$env:USERNAME\Desktop\ErrorProgs.log"  
########################################################################################

In der ErrorProgs.log steht bei Fehlern dann aber nur:
Remove-AppxPackage : Die Argumenttransformation für den Parameter "Package" kann nicht verarbeitet werden.   
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
In Z:\Win10\Scripts\Win10Progs.ps1:42 Zeichen:20
+ Remove-AppXPackage $ProgsZuLoeschen[3]
+                    ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Remove-AppxPackage], ParameterBindingArgumentTransformationE 
   xception
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Microsoft.Windows.Appx.PackageManager.Com 
   mands.RemoveAppxPackageCommand

Ich brauche aber genauere Angaben, also welche im array definierte App wurde nicht deinstalliert!

Edit: hier steht ein falscher Code Schnippsel, konnte das hier nicht editieren, zu umfangreich.
Richtiger Schnippsel bei meinen Antwortpost für SlainteMhath

########################################################################################
# Liste der fuer zukuenftige Benutzer installierten Programme erstellen:
Get-AppXProvisionedPackage -Online | Select PackageName > $env:SystemDrive\Users\$env:USERNAME\Desktop\ProvisionedApps.txt
########################################################################################
# array mit den Suchbegriffen/Namen der zu deinstalierenden Provisioned Apps
$array_ProvisionedAppsZuLoeschen = @("Microsoft.BingWeather","Microsoft.GetHelp","Microsoft.Getstarted","Microsoft.Messaging",  
"Microsoft.MicrosoftOfficeHub","Microsoft.MicrosoftSolitaireCollection","Microsoft.MicrosoftStickyNotes","Microsoft.MixedReality.Portal",  
"Microsoft.Office.OneNote","Microsoft.OneConnect","Microsoft.People","Microsoft.Wallet","Microsoft.WindowsAlarms","microsoft.windowscommunicationsapps",  
"Microsoft.WindowsFeedbackHub","Microsoft.WindowsMaps","Microsoft.Xbox.TCUI","Microsoft.XboxApp","Microsoft.XboxGameOverlay",  
"Microsoft.XboxGamingOverlay","Microsoft.XboxIdentityProvider","Microsoft.XboxSpeechToTextOverlay","Microsoft.ZuneMusic",  
"Microsoft.ZuneVideo")  
# Schleife durchlaeuft array bis zum Ende
for ($i=0; $i -lt $array_ProvisionedAppsZuLoeschen.length; $i++){
# Strings aus array werden nacheinander in oben generierter ProvisionedApps.txt gesucht
$ProvisionedAppsZuLoeschen = Select-String -path $env:SystemDrive\Users\$env:USERNAME\Desktop\ProvisionedApps.txt -pattern $array_ProvisionedAppsZuLoeschen[$i]
# Ausgabe wird am ":" in 3 teiliges array gesplittet 
$ProvisionedAppsZuLoeschen = $ProvisionedAppsZuLoeschen -split ":"  
# Leerzeichen am Ende jeder Zeile werden entfernt
$ProvisionedAppsZuLoeschen = $ProvisionedAppsZuLoeschen -replace "\s{0,}", ""  
# Variable des zu löschenden Programm wird an "Remove-AppXProvisionedPackage -Online -PackageName" Befehl angehaengt 
Remove-AppXProvisionedPackage -Online -PackageName $ProvisionedAppsZuLoeschen[3]
}
########################################################################################

Wer kann mir helfen?

Grüße
Potshock

Content-Key: 576693

Url: https://administrator.de/contentid/576693

Printed on: April 19, 2024 at 08:04 o'clock

Member: SlainteMhath
SlainteMhath Jun 04, 2020 at 10:35:39 (UTC)
Goto Top
Moin,

mal abgesehen davon, das sich der fehlerhafte Aufruf "Remove-AppXPackage $ProgsZuLoeschen[3]" nicht in deinem Code-Schnippsel wiederfindet... Gib doch einfach die relevanten Variablen in dein Logfile aus, dann weist du welcher Durchlauf den Fehler verursacht.

lg,
Slainte
Member: potshock
potshock Jun 04, 2020 at 11:08:29 (UTC)
Goto Top
Hi SlainteMhath,

sorry, konnte den Post oben nicht richtig editieren, Änderungen zu umfangreich face-wink.

Hier der richtige Schnippsel:
################################################################
# Liste der installierten Programme des angemeldeten Users erstellen:
Get-AppxPackage | % {if (!($_.IsFramework -or $_.PublisherId -eq "cw5n1h2txyewy")) {$_}} | select PackageFullName > $env:SystemDrive\Users\$env:USERNAME\Desktop\InstallierteApps.txt  
################################################################
# array mit den Suchbegriffen/Namen der zu deinstalierenden Apps
$array_ProgsZuLoeschen = @("microsoft.windowscommunicationsapps","Microsoft.XboxIdentityProvider","Microsoft.WindowsAlarms",  
"Microsoft.ZuneVideo","Microsoft.ZuneMusic","Microsoft.XboxSpeechToTextOverlay","Microsoft.XboxGamingOverlay",  
"Microsoft.XboxGameOverlay","Microsoft.XboxGameOverlay","Microsoft.XboxApp","Microsoft.Xbox.TCUI","Microsoft.WindowsMaps",  
"Microsoft.WindowsFeedbackHub","Microsoft.Wallet","Microsoft.People","Microsoft.OneConnect","Microsoft.Office.OneNote",  
"Microsoft.MixedReality.Portal","Microsoft.MicrosoftStickyNotes","Microsoft.MicrosoftSolitaireCollection",  
"Microsoft.MicrosoftOfficeHub","Microsoft.Messaging","Microsoft.Getstarted","Microsoft.GetHelp",  
"Microsoft.BingWeather","Microsoft.Todos","XINGAG.XING","king.com.FarmHeroesSaga","king.com.CandyCrushFriends")  
# Schleife durchlaeuft array bis zum Ende
for ($i=0; $i -lt $array_ProgsZuLoeschen.length; $i++){
# Strings aus array werden nacheinander in oben generierter InstallierteApps.txt gesucht
$ProgsZuLoeschen = Select-String -path $env:SystemDrive\Users\$env:USERNAME\Desktop\InstallierteApps.txt -pattern $array_ProgsZuLoeschen[$i]
# Ausgabe wird am ":" in 3 teiliges array gesplittet 
$ProgsZuLoeschen = $ProgsZuLoeschen -split ":"  
# Leerzeichen am Ende jeder Zeile werden entfernt
$ProgsZuLoeschen = $ProgsZuLoeschen -replace "\s{0,}", ""  
# Variable des zu löschenden Programm wird an Remove Befehl angehaengt
Remove-AppXPackage $ProgsZuLoeschen[3]
}

"Gib doch einfach die relevanten Variablen in dein Logfile aus, dann weist du welcher Durchlauf den Fehler verursacht."

Kannst Du mir da auf die Sprünge helfen?

Danke für deine Unterstüzung

Potshock
Member: SlainteMhath
SlainteMhath Jun 04, 2020 at 11:24:00 (UTC)
Goto Top
Add-Content $Log $ProgsZuLoeschen[3]
Mitglied: 144260
Solution 144260 Jun 04, 2020 updated at 12:28:21 (UTC)
Goto Top
Get-AppXProvisionedPackage -Online | Select PackageName > $env:SystemDrive\Users\$env:USERNAME\Desktop\ProvisionedApps.txt
Man kann sich seinen Bleistift auch im Allerwertesten anspitzen, macht mit Powershell aber keiner face-big-smile....

Start-Transcript "D:\meinLog.txt"  
$array_ProvisionedAppsZuLoeschen = @("Microsoft.BingWeather","Microsoft.GetHelp","Microsoft.Getstarted","Microsoft.Messaging",  
"Microsoft.MicrosoftOfficeHub","Microsoft.MicrosoftSolitaireCollection","Microsoft.MicrosoftStickyNotes","Microsoft.MixedReality.Portal",  
"Microsoft.Office.OneNote","Microsoft.OneConnect","Microsoft.People","Microsoft.Wallet","Microsoft.WindowsAlarms","microsoft.windowscommunicationsapps",  
"Microsoft.WindowsFeedbackHub","Microsoft.WindowsMaps","Microsoft.Xbox.TCUI","Microsoft.XboxApp","Microsoft.XboxGameOverlay",  
"Microsoft.XboxGamingOverlay","Microsoft.XboxIdentityProvider","Microsoft.XboxSpeechToTextOverlay","Microsoft.ZuneMusic",  
"Microsoft.ZuneVideo")  
Get-AppxProvisionedPackage -Online | ?{$_.DisplayName -in $array_ProvisionedAppsZuLoeschen} | Remove-AppxProvisionedPackage -Online -verbose
Stop-Transcript
Member: potshock
potshock Jun 04, 2020 updated at 12:47:43 (UTC)
Goto Top
Hi SlainteMhath,

Add-Content $Log $ProgsZuLoeschen[3]
In der Log erscheinen jetzt alle 28 Einträge welche ich auch im array definiert habe.

Im array steht z.B.: microsoft.windowscommunicationsapps
Im log steht dann: microsoft.windowscommunicationsapps_16005.11029....

Scheint also doch alles richtig zu sein. Die Apps sind auch aus dem startmenü verschwunden.

Nur was will mir die Fehlermeldung dann sagen?

Irgend eine Idee?

Gruß
Potshock
Member: potshock
potshock Jun 04, 2020 at 13:35:20 (UTC)
Goto Top
Hi killpid,


ich hatte meinen Beitrag zwischenzeitlich editiert.
Es geht nicht um die Provisioned Apps sondern um die Apps des gerade aktiven users !

Ich habe jetzt versucht deinen Vorschlag anzupassen, aber scheinbar selbst beim "Anspitzen" zu blöd face-wink.

Vielleicht kannst Du mir helfen:
Start-Transcript "$env:SystemDrive\Users\$env:USERNAME\Desktop\ErrorProgs.log"  
$array_ProgsZuLoeschen = @("microsoft.windowscommunicationsapps","Microsoft.XboxIdentityProvider","Microsoft.WindowsAlarms",  
"Microsoft.ZuneVideo","Microsoft.ZuneMusic","Microsoft.XboxSpeechToTextOverlay","Microsoft.XboxGamingOverlay",  
"Microsoft.XboxGameOverlay","Microsoft.XboxGameOverlay","Microsoft.XboxApp","Microsoft.Xbox.TCUI","Microsoft.WindowsMaps",  
"Microsoft.WindowsFeedbackHub","Microsoft.Wallet","Microsoft.People","Microsoft.OneConnect","Microsoft.Office.OneNote",  
"Microsoft.MixedReality.Portal","Microsoft.MicrosoftStickyNotes","Microsoft.MicrosoftSolitaireCollection",  
"Microsoft.MicrosoftOfficeHub","Microsoft.Messaging","Microsoft.Getstarted","Microsoft.GetHelp",  
"Microsoft.BingWeather","Microsoft.Todos","XINGAG.XING","king.com.FarmHeroesSaga","king.com.CandyCrushFriends")  
Get-AppxPackage | % {if (!($_.IsFramework -or $_.PublisherId -eq "cw5n1h2txyewy")) {$_}} |  ?{$_.DisplayName -in $array_ProgsZuLoeschen} | Remove-AppXPackage -verbose  
Stop-Transcript

Gruß
Potshock
Mitglied: 144260
Solution 144260 Jun 04, 2020 updated at 14:59:01 (UTC)
Goto Top
Naja, die Properties auf der Konsole hätte man sich zumindest mal ansehen können dann wäre dir aufgefallen das die Property anders heißt.
Get-AppxPackage | ?{(!($_.IsFramework -or $_.PublisherId -eq "cw5n1h2txyewy")) -and $_.Name -in $array_ProgsZuLoeschen} | Remove-AppXPackage -verbose  

I'm out.
Member: potshock
potshock Jun 05, 2020 at 07:47:55 (UTC)
Goto Top
Hi killpid,

danke Dir, läuft!

Gruß
Potshock