Question
Spécifier les credential pour $EventLog.WriteEntry
- Burgun
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 40
- Remerciements reçus 0
il y a 15 ans 6 mois #7724
par Burgun
Spécifier les credential pour $EventLog.WriteEntry a été créé par Burgun
Bonjour,
Je suis confronté à un problème. je souhaite écrire un évènement dans les journaux systèmes d'ordinateurs distants.
Je me suis appuyé sur internet pour cela :
[code:1]
#Choix du numero d'ID
$EventID=\"666\"
#Création de l'objet EventLog dans les journal souhaité (ici system)
$EventLog = New-Object System.Diagnostics.EventLog('System')
#Titre de l'évement
$EventLog.Source = \"Script de Shutdown\"
$EventLog.MachineName = \"$Nom\"
#Ecriture de l'evenement avec sa description
$EventLog.WriteEntry(\"Test : Shutdown demandé suite à un problème d'alimentation détecté par l'onduleur\",\"Warning\", $EventID)
[/code:1]
La variable $Nom représente le serveur sur lequel je souhaite inscrire l'évenement.
Cela fonctionne très bien lorsque le compte qui lance le script PS est connu du serveurs distant. Seulement certaines des machines sont accessible via un autre utilisateur. D'habitude je gère ces soucis avec des objets type credential et la commande get-credential.
A l'aide de condition \"if\" sur le nom des serveurs, je peux ainsi choisir tel ou tel type de compte.
Seulement si cette méthode fonctionne avec des commandes type get-wmi, je ne sais pas comment faire avec $EventLog.WriteEntry.
J'ai bien des idées en utilisant
[code:1]
Start-Process \"$PSHOME\powershell.exe\" -Credential $credentials -Argumentlist '-command \"$EventLog.WriteEntry(\"Test : Shutdown demandé suite à un problème d'alimentation détecté par l'onduleur\",\"Warning\", $EventID)\"'
[/code:1]
Mais si je démarre en process suplémentaire, je ne serais pas en mesure de récupérer des variables préalablement dans le scripts.
Si quelqu'un peut m'aider, je suis preneur.
Je suis confronté à un problème. je souhaite écrire un évènement dans les journaux systèmes d'ordinateurs distants.
Je me suis appuyé sur internet pour cela :
[code:1]
#Choix du numero d'ID
$EventID=\"666\"
#Création de l'objet EventLog dans les journal souhaité (ici system)
$EventLog = New-Object System.Diagnostics.EventLog('System')
#Titre de l'évement
$EventLog.Source = \"Script de Shutdown\"
$EventLog.MachineName = \"$Nom\"
#Ecriture de l'evenement avec sa description
$EventLog.WriteEntry(\"Test : Shutdown demandé suite à un problème d'alimentation détecté par l'onduleur\",\"Warning\", $EventID)
[/code:1]
La variable $Nom représente le serveur sur lequel je souhaite inscrire l'évenement.
Cela fonctionne très bien lorsque le compte qui lance le script PS est connu du serveurs distant. Seulement certaines des machines sont accessible via un autre utilisateur. D'habitude je gère ces soucis avec des objets type credential et la commande get-credential.
A l'aide de condition \"if\" sur le nom des serveurs, je peux ainsi choisir tel ou tel type de compte.
Seulement si cette méthode fonctionne avec des commandes type get-wmi, je ne sais pas comment faire avec $EventLog.WriteEntry.
J'ai bien des idées en utilisant
[code:1]
Start-Process \"$PSHOME\powershell.exe\" -Credential $credentials -Argumentlist '-command \"$EventLog.WriteEntry(\"Test : Shutdown demandé suite à un problème d'alimentation détecté par l'onduleur\",\"Warning\", $EventID)\"'
[/code:1]
Mais si je démarre en process suplémentaire, je ne serais pas en mesure de récupérer des variables préalablement dans le scripts.
Si quelqu'un peut m'aider, je suis preneur.
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 15 ans 6 mois #7733
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Spécifier les credential pour $EventLog.WriteEntry
Peut être coupler le programme EventCreate.exe et une session PS ou avec
PSexec
.
Sinon via les API .
Voir aussi ce post , attention aux versions d'OS supportés.
Il existe write-eventlog, mais il ne propose pas Credential...
Il est possible d'exécuter PS de cette manière :
[code:1]$result= $PSHOME\powershell.exe ...[/code:1]
A voir si cela peut t'aider.
Sinon via les API .
Voir aussi ce post , attention aux versions d'OS supportés.
Il existe write-eventlog, mais il ne propose pas Credential...
Il est possible d'exécuter PS de cette manière :
[code:1]$result= $PSHOME\powershell.exe ...[/code:1]
A voir si cela peut t'aider.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Alan Pinard
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 77
- Remerciements reçus 0
il y a 15 ans 6 mois #7750
par Alan Pinard
Alan Pinard
Version A
Réponse de Alan Pinard sur le sujet Re:Spécifier les credential pour $EventLog.WriteEntry
Bonjour Bvivi57,
Voici ce que je viens de tester sur un serveur 2003 et ça a fonctionné:
Avec la CmdLet \"Invoke-Command\" j'ai exécuté mon code sur le servuer distant:
[code:1]
$Cred = Get-Credential
Invoke-command -ComputerName Server1 -Credential $Cred -ScriptBlock {
Function Create-LogEntry {
#Usage :
#Create-LogEntry -LogName \"Application\" -Category \"VAMON\" -Type \"Information\" -Message \"Test #3\" -EventID 10000
PARAM(
$ComputerName = \".\",
$LogName,
$Category,
$Type,
$EventID,
$Message
)
#Creation of the entry in log
$CreateLog = New-Object System.Diagnostics.EventLog
$CreateLog.Set_MachineName($ComputerName)
$CreateLog.Set_log($LogName)
$CreateLog.Set_source($Category)
$CreateLog.WriteEntry($Message,$Type,$EventID)
}
Create-LogEntry -LogName \"Application\" -Category \"VAMON\" -Type \"Information\" -Message \"Test #3\" -EventID 10000
}
[/code:1]
En espérant que cela te donnera un coup de pouce!
Voici ce que je viens de tester sur un serveur 2003 et ça a fonctionné:
Avec la CmdLet \"Invoke-Command\" j'ai exécuté mon code sur le servuer distant:
[code:1]
$Cred = Get-Credential
Invoke-command -ComputerName Server1 -Credential $Cred -ScriptBlock {
Function Create-LogEntry {
#Usage :
#Create-LogEntry -LogName \"Application\" -Category \"VAMON\" -Type \"Information\" -Message \"Test #3\" -EventID 10000
PARAM(
$ComputerName = \".\",
$LogName,
$Category,
$Type,
$EventID,
$Message
)
#Creation of the entry in log
$CreateLog = New-Object System.Diagnostics.EventLog
$CreateLog.Set_MachineName($ComputerName)
$CreateLog.Set_log($LogName)
$CreateLog.Set_source($Category)
$CreateLog.WriteEntry($Message,$Type,$EventID)
}
Create-LogEntry -LogName \"Application\" -Category \"VAMON\" -Type \"Information\" -Message \"Test #3\" -EventID 10000
}
[/code:1]
En espérant que cela te donnera un coup de pouce!
Alan Pinard
Version A
Connexion ou Créer un compte pour participer à la conversation.
- Burgun
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 40
- Remerciements reçus 0
il y a 15 ans 6 mois #7751
par Burgun
Réponse de Burgun sur le sujet Re:Spécifier les credential pour $EventLog.WriteEntry
Merci beaucoup pour votre aide!
Pour l'instant j'ai réussi en utilisant \"EventCreate.exe\"
Je vais tester le reste des que possible!
Merci encor
Pour l'instant j'ai réussi en utilisant \"EventCreate.exe\"
Je vais tester le reste des que possible!
Merci encor
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.040 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Spécifier les credential pour $EventLog.WriteEntry