Question Spécifier les credential pour $EventLog.WriteEntry

Plus d'informations
il y a 15 ans 6 mois #7724 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.:)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 6 mois #7733 par Laurent Dardenne
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.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 6 mois #7750 par Alan Pinard
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!

Alan Pinard
Version A

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 6 mois #7751 par Burgun
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

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.040 secondes
Propulsé par Kunena