2 votes

Suppression de 3D Builder dans Windows 10

Je tape cela dans PowerShell en tant qu'administrateur pour supprimer 3D Builder:

C:\Windows\System32>get-appxpackage *3dbuilder* | remove-appxpackage

Cela fonctionne bien, mais comment puis-je écrire la même ligne dans un fichier Batch pour faire la même chose?

0voto

Fazer87 Points 11931

La raison pour laquelle cela ne fonctionnera pas est qu'un script PowerShell est très différent d'un fichier batch à la fois en termes de contenu ET de la manière dont Windows (par défaut) le gérera.

Par exemple - si vous enregistrez Write-Host $ENV:COMPUTERNAME dans un fichier PowerShell (.ps1) et que vous double-cliquez dessus - il s'ouvrira très probablement dans le Bloc-notes!

Si vous souhaitez vraiment avoir cette commande PowerShell en une seule ligne dans un fichier batch - vous voulez quelque chose comme powershell.exe -command "get-appxpackage *3dbuilder* | remove-appxpackage" enregistré dans votre fichier batch. Vous devriez alors pouvoir cliquer avec le bouton droit et "exécuter en tant qu'administrateur" sur le fichier batch pour obtenir les effets souhaités.

À défaut de cela - si vous avez un script PowerShell .ps1 - vous pouvez l'appeler à partir d'un fichier batch en utilisant PowerShell.exe -File C:\Folder\script.ps1 et l'exécuter à partir d'une ligne de commande administrative.

Alternativement, vous devrez ouvrir PowerShell (ou ISE) en tant qu'administrateur et exécuter le script (& C:\Folder\file.ps1)

Enfin - vous pouvez utiliser l'interrupteur -verb RunAs pour essayer de forcer l'élévation si nécessaire lors de l'appel à PowerShell.exe ou vous pouvez utiliser le bloc de script suivant dans votre script pour provoquer une élévation de session (avec une invite UAC si nécessaire):

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {  

  $arguments = "& '" + $myinvocation.mycommand.definition + "'"
   Start-Process powershell -Verb runAs -ArgumentList $arguments
   Break

}
###Mon code de script va ici et sera exécuté si je suis un administrateur!

Note - vous pourriez suivre la voie horrible de reconfigurer Windows pour ouvrir les scripts PowerShell dans PowerShell et/ou ajouter un menu contextuel Windows pour exécuter PowerShell en tant qu'administrateur - mais c'est désordre et dangereux pour le moins.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X