Question
Optimisation et gestion des erreurs.
- JONDON Cyril
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 78
- Remerciements reçus 0
il y a 13 ans 1 jour #14413
par JONDON Cyril
Réponse de JONDON Cyril sur le sujet Re:Optimisation et gestion des erreurs.
On peut encore remercier Laurent il est en effet tout à fait possible de lancer une session powershell 32 bits à distance.
[code:1]
Invoke-Command {Ma Mes commandes} -Comp MonMesPCS -ConfigurationName Microsoft.Powershell32
[/code:1]
La condition étant que la ou les cible(s) est bien la configuration de session Microsoft.Powershell32 définie.
Dans un session Shell 32 Bits sur des psotes 64 Bitston script n'aurait pas besoin d'être revu pour la clé de registre.
Après c'est une question de timing, qu'est ce qui est le plus rapide en terme de mise en oeuvre : modifier ton script pour qu'il s'adapte à la cible 32 bits ou 64 bits ou mettre en place l'accès au shell 32 bits sur tes postes ce n'est pas le cas.
Pour ça c'est toi qui est le mieux placé pour trancher.
[code:1]
Invoke-Command {Ma Mes commandes} -Comp MonMesPCS -ConfigurationName Microsoft.Powershell32
[/code:1]
La condition étant que la ou les cible(s) est bien la configuration de session Microsoft.Powershell32 définie.
Dans un session Shell 32 Bits sur des psotes 64 Bitston script n'aurait pas besoin d'être revu pour la clé de registre.
Après c'est une question de timing, qu'est ce qui est le plus rapide en terme de mise en oeuvre : modifier ton script pour qu'il s'adapte à la cible 32 bits ou 64 bits ou mettre en place l'accès au shell 32 bits sur tes postes ce n'est pas le cas.
Pour ça c'est toi qui est le mieux placé pour trancher.
Connexion ou Créer un compte pour participer à la conversation.
- Dwelatha
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 13 ans 1 jour #14415
par Dwelatha
Réponse de Dwelatha sur le sujet Re:Optimisation et gestion des erreurs.
Hello,
Merci pour vous retours.
En fait, j'aimerai bien partir sur la solution des jobs asynchrones mais j'ai du mal à me lancer.
Je n'ai pas bien saisis la mécanique
Merci pour vous retours.
En fait, j'aimerai bien partir sur la solution des jobs asynchrones mais j'ai du mal à me lancer.
Je n'ai pas bien saisis la mécanique
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 13 ans 1 jour #14416
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Optimisation et gestion des erreurs.
Dwelatha écrit:
Utilise des job locaux et un random pour générer des erreur ou des données aléatoires dans un ensemble.
Première étape : ta fonction doit renvoyer des objets et ne pas être couplée à XL.
Un autre exemple sans la gestion des event de changement d'état d'un job.Je n'ai pas bien saisis la mécanique
Utilise des job locaux et un random pour générer des erreur ou des données aléatoires dans un ensemble.
Première étape : ta fonction doit renvoyer des objets et ne pas être couplée à XL.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Dwelatha
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 13 ans 1 jour #14417
par Dwelatha
Réponse de Dwelatha sur le sujet Re:Optimisation et gestion des erreurs.
Merci, je vais regarder tout ça tranquillement à la maison.
Bonne soirée, bon weekend.
Bonne soirée, bon weekend.
Connexion ou Créer un compte pour participer à la conversation.
- Dwelatha
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 12 ans 11 mois #14420
par Dwelatha
Réponse de Dwelatha sur le sujet Re:Optimisation et gestion des erreurs.
Hello,
Laurent Dardenne écrit:
Concernant la première étape, la fonction doit ressembler quelque chose dans ce type ? ou je suis aux antipodes ?
[code:1]Function GetRegInfo
{
Param ([string]$strComputer, $key, $value)
$ErrorActionPreference = \"SilentlyContinue\"
$root = \"LocalMachine\"
$rootkey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($root, $strComputer)
$key = $rootkey.OpenSubKey($key)
$key.GetValue($value)
}
$KeyPath = \"SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
$Product = \"ProductName\"
$Productver = \"CSDVersion\"
$ProductID = \"ProductId\"
[/code:1]
Quand j'effectue depuis ma console Powershell la commande suivante:
[code:1]PS C:\Windows> GetRegInfo -cn $_ -key $KeyPath -value $Productver[/code:1]
je vois bien en sortie: [code:1]Service Pack 1[/code:1]
Laurent Dardenne écrit:
Première étape : ta fonction doit renvoyer des objets et ne pas être couplée à XL.
Concernant la première étape, la fonction doit ressembler quelque chose dans ce type ? ou je suis aux antipodes ?
[code:1]Function GetRegInfo
{
Param ([string]$strComputer, $key, $value)
$ErrorActionPreference = \"SilentlyContinue\"
$root = \"LocalMachine\"
$rootkey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($root, $strComputer)
$key = $rootkey.OpenSubKey($key)
$key.GetValue($value)
}
$KeyPath = \"SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
$Product = \"ProductName\"
$Productver = \"CSDVersion\"
$ProductID = \"ProductId\"
[/code:1]
Quand j'effectue depuis ma console Powershell la commande suivante:
[code:1]PS C:\Windows> GetRegInfo -cn $_ -key $KeyPath -value $Productver[/code:1]
je vois bien en sortie: [code:1]Service Pack 1[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 11 mois #14421
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Optimisation et gestion des erreurs.
Dwelatha écrit:
Plus précisément si ta fonction renvoie + infos un appel au cmdlet New-Object est préférable :
[code:1]
Function Get-RegistryInformation {
# HKLM\SOFTWARE\McAfee\DesktopProtection
$key=\"SOFTWARE\McAfee\DesktopProtection\"
$regKey = $regKey.OpenSubKey($key)
$Product = $regKey.GetValue(\"Product\"«»);
$productver = $regKey.GetValue(\"szProductVer\"«»)
$key1=\"SOFTWARE\McAfee\Vscore\On Access Scanner\McShield\"
$regKey = $regKey.OpenSubKey($key1)
#?? traitement manquant ?
$key2=\"SOFTWARE\McAfee\AVEngine\"
$regKey = $regKey.OpenSubKey($key2)
# HKLM\Software\McAfee\Vscore\On Acess Scanner\McShield (Pour les versions antérieures à VSE 8.8)
$ScanEngine = $regKey.GetValue(\"EngineVersionMajor\"«»)
# HKLM\Software\McAfee\AVEngine (pour les versions VSE 8.8)
$ScanEngine = $regKey.GetValue(\"EngineVersionMajor\"«»)
# HKLM\Software\McAfee\Vscore\On Acess Scanner\McShield (pour les versions antérieures à VSE 8.8)
$VirDefVer = $regKey.GetValue(\"AVDatVersion\"«»)
# HKLM\Software\McAfee\AVEngine (pour les versions VSE 8.8)
$VirDefVer = $regKey.GetValue(\"AVDatVersion\"«»)
$key2=\"SOFTWARE\Network Associates\ePolicy Orchestrator\Agent\"
$regkey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, $strComputer)
$regKey = $regKey.OpenSubKey($key2)
# HKLM\Software\Network Associates\ePolicy Orchestrator\Agent / # Split du fqdn server
$ServerList = $regKey.GetValue(\"ePOServerList\"«») -split {$_ -eq \".\" -or $_ -eq \"|\"}
# HKLM\Software\Network Associates\ePolicy Orchestrator\Agent
$AgentGUID = $regKey.GetValue(\"AgentGUID\"«»)
$key3=\"SOFTWARE\Network Associates\ePolicy Orchestrator\Application Plugins\CMNUPD__3000\"
$regKey = $regKey.OpenSubKey($key3)
# HKLM\SOFTWARE\Network Associates\ePolicy Orchestrator\Application Plugins\CMNUPD__3000
$AgentVersion = $regKey.GetValue(\"Version\"«»)
New-Object PSObject -property @{
Product = $Product;
productver = $szProductVer;
ScanEngine = ScanEngine;
VirDefVer=$VirDefVer;
AgentGUID =$AgentGUID;
AgentVersion = $AgentVersion;
Computer=$env:ComputerName
}
}#Function Get-RegistryInformation
$MyInfos= Get-RegistryInformation
$MyInfos
[/code:1]
Voilà le principe, ensuite il reste à contrôler ton code, il contient peut être qq erreurs. Et comme ici on le conçoit 'localement' on peut utiliser directement le provider de registry.
Ton objet porte le nom du serveur interrogé, ensuite c'est le job qui exécutera ta fonction sur chacun des serveurs. Et c'est ta mécanique qui récupérera les données des jobs ET ensuite tu pourras les formater dans XL ou ACcess ou autre choses.
Oui.Concernant la première étape, la fonction doit ressembler quelque chose dans ce type ?
Plus précisément si ta fonction renvoie + infos un appel au cmdlet New-Object est préférable :
[code:1]
Function Get-RegistryInformation {
# HKLM\SOFTWARE\McAfee\DesktopProtection
$key=\"SOFTWARE\McAfee\DesktopProtection\"
$regKey = $regKey.OpenSubKey($key)
$Product = $regKey.GetValue(\"Product\"«»);
$productver = $regKey.GetValue(\"szProductVer\"«»)
$key1=\"SOFTWARE\McAfee\Vscore\On Access Scanner\McShield\"
$regKey = $regKey.OpenSubKey($key1)
#?? traitement manquant ?
$key2=\"SOFTWARE\McAfee\AVEngine\"
$regKey = $regKey.OpenSubKey($key2)
# HKLM\Software\McAfee\Vscore\On Acess Scanner\McShield (Pour les versions antérieures à VSE 8.8)
$ScanEngine = $regKey.GetValue(\"EngineVersionMajor\"«»)
# HKLM\Software\McAfee\AVEngine (pour les versions VSE 8.8)
$ScanEngine = $regKey.GetValue(\"EngineVersionMajor\"«»)
# HKLM\Software\McAfee\Vscore\On Acess Scanner\McShield (pour les versions antérieures à VSE 8.8)
$VirDefVer = $regKey.GetValue(\"AVDatVersion\"«»)
# HKLM\Software\McAfee\AVEngine (pour les versions VSE 8.8)
$VirDefVer = $regKey.GetValue(\"AVDatVersion\"«»)
$key2=\"SOFTWARE\Network Associates\ePolicy Orchestrator\Agent\"
$regkey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, $strComputer)
$regKey = $regKey.OpenSubKey($key2)
# HKLM\Software\Network Associates\ePolicy Orchestrator\Agent / # Split du fqdn server
$ServerList = $regKey.GetValue(\"ePOServerList\"«») -split {$_ -eq \".\" -or $_ -eq \"|\"}
# HKLM\Software\Network Associates\ePolicy Orchestrator\Agent
$AgentGUID = $regKey.GetValue(\"AgentGUID\"«»)
$key3=\"SOFTWARE\Network Associates\ePolicy Orchestrator\Application Plugins\CMNUPD__3000\"
$regKey = $regKey.OpenSubKey($key3)
# HKLM\SOFTWARE\Network Associates\ePolicy Orchestrator\Application Plugins\CMNUPD__3000
$AgentVersion = $regKey.GetValue(\"Version\"«»)
New-Object PSObject -property @{
Product = $Product;
productver = $szProductVer;
ScanEngine = ScanEngine;
VirDefVer=$VirDefVer;
AgentGUID =$AgentGUID;
AgentVersion = $AgentVersion;
Computer=$env:ComputerName
}
}#Function Get-RegistryInformation
$MyInfos= Get-RegistryInformation
$MyInfos
[/code:1]
Voilà le principe, ensuite il reste à contrôler ton code, il contient peut être qq erreurs. Et comme ici on le conçoit 'localement' on peut utiliser directement le provider de registry.
Ton objet porte le nom du serveur interrogé, ensuite c'est le job qui exécutera ta fonction sur chacun des serveurs. Et c'est ta mécanique qui récupérera les données des jobs ET ensuite tu pourras les formater dans XL ou ACcess ou autre choses.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.059 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Optimisation et gestion des erreurs.