Question
Script désinstallation office préinstallé
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 3 ans 2 semaines #30703
par witness
Script désinstallation office préinstallé a été créé par witness
Bonjour,
J'utilise un script pour la suppression d'office 365 préinstallé qui empeche la bonne installation d'office 2016 pro sur les postes.
Seulement, j'aimerais que vous m'apportiez deux explications.
Voici le script:
Pourriez-vous m'expliquer le .UninstallString à la fin de la première ligne ainsi que les [1] et [2] dans ForEach
Merci d'avance pour vos lumières.
J'utilise un script pour la suppression d'office 365 préinstallé qui empeche la bonne installation d'office 2016 pro sur les postes.
Seulement, j'aimerais que vous m'apportiez deux explications.
Voici le script:
$OfficeUninstallStrings = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where {$_.DisplayName -like "Microsoft 365*"} | Select UninstallString).UninstallString
ForEach ($UninstallString in $OfficeUninstallStrings) {
$UninstallEXE = ($UninstallString -split '"') [1]
$UninstallArg = ($UninstallString -split '"') [2] + " DisplayLevel=False"
Start-Process -FilePath $UninstallEXE -ArgumentList $UninstallArg -Wait
}
Pourriez-vous m'expliquer le .UninstallString à la fin de la première ligne ainsi que les [1] et [2] dans ForEach
Merci d'avance pour vos lumières.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 2 semaines #30704
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Script désinstallation office préinstallé
Salut,
>>Pourriez-vous m'expliquer le .UninstallString à la fin de la première ligne
C'est une groupe d'instructions renvoyant un objet à partir du quel on récupère le contenu d'une propriété.
Équivaut à : >>ainsi que les [1] et [2] dans ForEach
L'opérateur -Split renvoie un tableau de chaînes de caractère, le [1] précise l'indice 1 ( donc le second élément du tableau) et le [2] le troisième élément.
Cela évite une variable intermédiaire qui permettrait ici d'exécuter une seule fois l'opération...
>>Pourriez-vous m'expliquer le .UninstallString à la fin de la première ligne
C'est une groupe d'instructions renvoyant un objet à partir du quel on récupère le contenu d'une propriété.
Équivaut à :
$Objet=Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where {$_.DisplayName -like "Microsoft 365*"} | Select UninstallString
$Objet.UninstallString
L'opérateur -Split renvoie un tableau de chaînes de caractère, le [1] précise l'indice 1 ( donc le second élément du tableau) et le [2] le troisième élément.
Cela évite une variable intermédiaire qui permettrait ici d'exécuter une seule fois l'opération...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 3 ans 2 semaines - il y a 3 ans 2 semaines #30706
par witness
Réponse de witness sur le sujet Script désinstallation office préinstallé
Salut Laurent,
Merci pour la réponse.
Ici, pour résumer, le bout de code ci-dessous va chercher dans le registre les données de la valeur UninstallString se trouvant dans une clé de registre dont le nom contient Microsoft 365.
Le .UninstallString à la fin de l'instruction récupère donc les données de la valeur de registre dont le nom est UninstallString.
Les données de la valeur de registre UninstallString sont donc le contenu et la valeur de registre UninstallString est la propriété ?
Ainsi, quand vous dites: C'est un groupe d'instructions renvoyant un objet à partir du quel on récupère le contenu d'une propriété.
L'objet c'est bien la valeur de registre UninstallString ?
Le contenu de la propriété c'est bien les données de la valeur UninstallString ?
Mais la propriété ? Il existerait implicitement une propriété UninstallString pour l'objet qui est la valeur de registre UninstallString ?
Je ne sais pas si je suis très clair, merci d'avance.
Merci pour la réponse.
Ici, pour résumer, le bout de code ci-dessous va chercher dans le registre les données de la valeur UninstallString se trouvant dans une clé de registre dont le nom contient Microsoft 365.
$OfficeUninstallStrings = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where {$_.DisplayName -like "Microsoft 365*"} | Select UninstallString).UninstallString
Le .UninstallString à la fin de l'instruction récupère donc les données de la valeur de registre dont le nom est UninstallString.
Les données de la valeur de registre UninstallString sont donc le contenu et la valeur de registre UninstallString est la propriété ?
Ainsi, quand vous dites: C'est un groupe d'instructions renvoyant un objet à partir du quel on récupère le contenu d'une propriété.
L'objet c'est bien la valeur de registre UninstallString ?
Le contenu de la propriété c'est bien les données de la valeur UninstallString ?
Mais la propriété ? Il existerait implicitement une propriété UninstallString pour l'objet qui est la valeur de registre UninstallString ?
Je ne sais pas si je suis très clair, merci d'avance.
Dernière édition: il y a 3 ans 2 semaines par witness.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 2 semaines #30707
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Script désinstallation office préinstallé
>>Je ne sais pas si je suis très clair
Bah pas trop
Sous Powershell un provider permet d'adresser différentes sources de données de manière uniforme.
Les données de la base de registre sont donc transformées en objet par Powershell.
Un exemple :Pour
>>Mais la propriété ? Il existerait implicitement une propriété UninstallString pour l'objet qui est la valeur de registre UninstallString ?
Comme tu le lis la réponse est oui.
>>L'objet c'est bien la valeur de registre UninstallString ?
Oui.
Powershell manipule des objets, il ne sait pas ce qu'est une clé de registre, mais il connait l'origine ( le fournisseur) de l'objet ( ici le provider Registry) :Donc pour faire simple, le
système
connait la base de registre et Powershell des objets représentant des informations de la base de registre. La notion de provider est entre les deux.
Bah pas trop
Sous Powershell un provider permet d'adresser différentes sources de données de manière uniforme.
Les données de la base de registre sont donc transformées en objet par Powershell.
Un exemple :
#on se place sur le provider de la base de registre
# sur le chemin contenant des infos sur les applis
cd HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\Git_is1
#On récupère une information de la base de registre ( chemin courant )
Get-ItemProperty -path . -Name un*
#le détail de l'objet
Get-ItemProperty -path . -Name un*|Get-member
# TypeName: System.Management.Automation.PSCustomObject
#
#Name MemberType Definition
#---- ---------- ----------
#Equals Method bool Equals(System.Object obj)
#...
#UninstallString NoteProperty string UninstallString="C:\Program Files\Git\unins000.exe"
>>Mais la propriété ? Il existerait implicitement une propriété UninstallString pour l'objet qui est la valeur de registre UninstallString ?
Comme tu le lis la réponse est oui.
>>L'objet c'est bien la valeur de registre UninstallString ?
Oui.
Powershell manipule des objets, il ne sait pas ce qu'est une clé de registre, mais il connait l'origine ( le fournisseur) de l'objet ( ici le provider Registry) :
Get-ItemProperty -path . -Name un*|Get-member
# TypeName: System.Management.Automation.PSCustomObject
#
#Name MemberType Definition
#---- ---------- ----------
#Equals Method bool Equals(System.Object obj)
#...
#PSProvider NoteProperty ProviderInfo PSProvider=Microsoft.PowerShell.Core\Registry
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 3 ans 1 semaine - il y a 3 ans 1 semaine #30717
par witness
Réponse de witness sur le sujet Script désinstallation office préinstallé
Salut Laurent,
Merci pour l'explication.
J'ai fait un test sur une autre application est voici:
D'après Get-member, UninstallString est une propriété de type "NoteProperty", peux-tu m'expliquer ?
Et aussi, pourquoi le get-member de cette variable ne renvoie que ces 5 membres ?
Autrement dit, comment le système sait-il qu'il peut proposer tel ou tel propriété ou méthode selon l'objet (ici la variable) ?
Merci beaucoup
Merci pour l'explication.
J'ai fait un test sur une autre application est voici:
PS C:\Users\toto> $test = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where {$_.DisplayName -like "7-Z*"} | Select UninstallString)
PS C:\Users\toto> $test
UninstallString
---------------
C:\Program Files\7-Zip\Uninstall.exe
PS C:\Users\toto> $test | Get-Member
TypeName: Selected.System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
UninstallString NoteProperty string UninstallString=C:\Program Files\7-Zip\Uninstall.exe
D'après Get-member, UninstallString est une propriété de type "NoteProperty", peux-tu m'expliquer ?
Et aussi, pourquoi le get-member de cette variable ne renvoie que ces 5 membres ?
Autrement dit, comment le système sait-il qu'il peut proposer tel ou tel propriété ou méthode selon l'objet (ici la variable) ?
Merci beaucoup
Dernière édition: il y a 3 ans 1 semaine par witness.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 1 semaine #30719
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Script désinstallation office préinstallé
>>D'après Get-member, UninstallString est une propriété de type "NoteProperty",
C'est une propriété ajoutée par le provider (Powershell), elle porte une information issue de la base de registre.
>> pourquoi le get-member de cette variable ne renvoie que ces 5 membres ?
Le cmdlet Select-Object cré un objet personnalisé ( PsCustomObjet) et ajoute la lou les propriétés indiquées en paramètre. Les autres membres sont les méthodes par défaut du type System.Objet (dotNet) .
>>comment le système sait-il qu'il peut proposer tel ou tel propriété ou méthode selon l'objet (ici la variable) ?
A l'aide du mécanisme de reflection de dotNet associé à ETS ( systeme de type de Powershell).
Le détail :
laurent-dardenne.developpez.com/articles...iquesSousPowerShell/
C'est une propriété ajoutée par le provider (Powershell), elle porte une information issue de la base de registre.
>> pourquoi le get-member de cette variable ne renvoie que ces 5 membres ?
Le cmdlet Select-Object cré un objet personnalisé ( PsCustomObjet) et ajoute la lou les propriétés indiquées en paramètre. Les autres membres sont les méthodes par défaut du type System.Objet (dotNet) .
>>comment le système sait-il qu'il peut proposer tel ou tel propriété ou méthode selon l'objet (ici la variable) ?
A l'aide du mécanisme de reflection de dotNet associé à ETS ( systeme de type de Powershell).
Le détail :
laurent-dardenne.developpez.com/articles...iquesSousPowerShell/
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.091 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Script désinstallation office préinstallé