J'ai écrit un programme avec C#, qui crée un fichier journal et remplit ceci en utilisant log4net. Ce programme démarre powershell-scripts. Les scripts utilisent aussi log4net. Il fonctionne:"Write-Error" (écrire dans Powershell, utilisé en C#) fonctionne MAIS Write-Debug ne fonctionne pas - Pourquoi?
> C#:
> ps.Runspace.SessionStateProxy.SetVariable("myMethod",(Action<Level,string>)myMethod);
> ps.AddCommand(System.IO.Path.Combine(pathScripts, testSkripte[i].ToString()));
> ps.Invoke();
> Powershell:
> $ScriptLog.Invoke([log4net.Core.Level]::Debug, "TestFile_Debug")
> $ScriptLog.Invoke([log4net.Core.Level]::Warn, "TestFile_Warn") $ScriptLog
> $ScriptLog.Invoke([log4net.Core.Level]::Error, "TestFile_Error")
Maintenant, je veux ajouter utiliser la norme Write-Error, Write-Debug, etc. CmdLets dans mon script.
(looks like here - réponse de Hinek).
Powershell:
Write-Warning "Write-Warning"
AND
Write-Error "Write-Error"
œuvres
, mais les travaux suivants Indifférent Fume:
Write-Debug "Write-Debug" (I don´t get an item in my logfile) OR
Write-Debug "Write-Debug" -debug (for this I get an item in my logfile, but ...)
... je reçois une erreur dans mon fichier journal aussi. L'erreur ressemble à ceci:
[2010-10-22 13:10:58,097] DEBUG : Write-Debug
[2010-10-22 13:10:58,113] ERROR : Cannot invoke this function because the current
host does not implement it
(je pense avoir tous les espaces de noms.)
Qu'est-ce que le message d'erreur signifie et que puis-je faire à nouveau cela?
grâce
Bonne trouvaille. Pourtant, il semble que votre application n'est pas si triviale. Une approche hôte personnalisée est évolutive et donc plus attrayante pour des solutions non triviales. Imaginez: demain, votre script de travail veut appeler 'Write-Progress',' Read-Host', et ainsi de suite. Avoir un hôte personnalisé vous permettra d'ajouter des fonctionnalités encore manqué relativement facile. –