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-ID: 576693

Url: https://administrator.de/forum/edit-powershell-array-durchlaeuft-schleife-genauere-fehlerangabe-benoetigt-576693.html

Ausgedruckt am: 22.12.2024 um 11:12 Uhr

SlainteMhath
SlainteMhath 04.06.2020 um 12:35:39 Uhr
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
potshock
potshock 04.06.2020 um 13:08:29 Uhr
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
SlainteMhath
SlainteMhath 04.06.2020 um 13:24:00 Uhr
Goto Top
Add-Content $Log $ProgsZuLoeschen[3]
144260
Lösung 144260 04.06.2020 aktualisiert um 14:28:21 Uhr
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
potshock
potshock 04.06.2020 aktualisiert um 14:47:43 Uhr
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
potshock
potshock 04.06.2020 um 15:35:20 Uhr
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
144260
Lösung 144260 04.06.2020 aktualisiert um 16:59:01 Uhr
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.
potshock
potshock 05.06.2020 um 09:47:55 Uhr
Goto Top
Hi killpid,

danke Dir, läuft!

Gruß
Potshock