O script do PowerShell gera muitos avisos no log de eventos do Windows

1

Eu tenho um script do PowerShell - bastante complexo - em execução no Windows Server 2008 R2. Ao executar o script no ISE ou também no console, tudo corre bem. Nenhum erro ou qualquer outra coisa que se destacasse.

No entanto, no visualizador de eventos do Windows, muitos avisos estão sendo gerados sem qualquer motivo específico que eu possa ver.

Log Name: Microsoft-Windows-PowerShell/Operational

Source: PowerShell (Microsoft-Windows-PowerShell)

Event ID: 4100

Task Category: Executing Pipeline

    Error Message = System error.
    Context:
    Severity = Warning
    Host Name = Windows PowerShell ISE Host
    Host Version = 4.0
    Host ID = cec010f3-ea0f-44b0-8d2e-449a6c1eb3e6
    Engine Version = 4.0
    Runspace ID = b2e8d39c-4fa1-4a3f-b33e-b42f8b552c3d
    Pipeline ID = 17
    Command Name = 
    Command Type = 
    Script Name = 
    Command Path = 
    Sequence Number = 92
    User = [the executing user]
    Shell ID = Microsoft.PowerShell


    User Data:

O Google não revelou nada. Alguém tem uma ideia do que isso poderia significar? Como eu disse, há dúzias dessas entradas. Deixe-me saber se devo postar mais alguma coisa.

Muito obrigado!

edit: conforme solicitado, todo o evento XML

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-PowerShell" Guid="{A0C1853B-5C40-4B15-8766-3CF1C58F985A}" /> 
<EventID>4100</EventID> 
<Version>1</Version> 
<Level>3</Level> 
<Task>106</Task> 
<Opcode>19</Opcode> 
<Keywords>0x0</Keywords> 
<TimeCreated SystemTime="2015-03-16T14:06:07.066866300Z" /> 
<EventRecordID>1994921</EventRecordID> 
<Correlation ActivityID="{01EC0C48-F800-0001-6B28-234CAE5DD001}" /> 
<Execution ProcessID="6528" ThreadID="5376" /> 
<Channel>Microsoft-Windows-PowerShell/Operational</Channel> 
<Computer>[host]</Computer> 
<Security UserID="S-1-5-21-1482476501-1450960922-725345543-2410959" /> 
</System>
<EventData>
  <Data Name="ContextInfo">Severity = Warning Host Name = Windows PowerShell ISE Host Host Version = 4.0 Host ID = cec010f3-ea0f-44b0-8d2e-449a6c1eb3e6 Engine Version = 4.0 Runspace ID = b2e8d39c-4fa1-4a3f-b33e-b42f8b552c3d Pipeline ID = 36 Command Name = Command Type = Script Name = Command Path = Sequence Number = 7665 User = [user name] Shell ID = Microsoft.PowerShell</Data> 
  <Data Name="UserData" /> 
  <Data Name="Payload">Error Message = System error.</Data> 
</EventData>
</Event>

adicionado PS D:\Autonomy\cd_provisioning_client> ($PsVersionTable)

Name                           Value                                                                                                                                                                                                  
----                           -----                                                                                                                                                                                                  
PSVersion                      4.0                                                                                                                                                                                                    
WSManStackVersion              3.0                                                                                                                                                                                                    
SerializationVersion           1.1.0.1                                                                                                                                                                                                
CLRVersion                     4.0.30319.34209                                                                                                                                                                                        
BuildVersion                   6.3.9600.16406                                                                                                                                                                                         
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}                                                                                                                                                                                   
PSRemotingProtocolVersion      2.2   

powershell_ise.exe.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" />    
</startup> 
</configuration>
    
por silent 16.03.2015 / 12:23

1 resposta

0

When executing the script in the ISE or also in the console, everything runs fine. No errors or anything else that would stand out.

Funciona bem não significa que não há erros encontrados. Seu script provavelmente os ignora, usando o parâmetro -ErrorAction SilentlyContinue com cmdlets. Exemplo:

Get-ChildItem -LiteralPath ZZZ:\

Isso gerará o chamado erro de finalização e interromperá o pipeline atual, mas porque o A variável ErrorActionPreference é definida por padrão para Continue , o script em si continuará a execução. E, como você pode ver, o host do PowerShell registrará esse erro no log de eventos.

Se você quiser depurar seu script e descobrir qual erro causa esse registro de log, defina $ErrorActionPreference para Stop no início de seu script e execute-o. O primeiro erro encontrado interromperá a execução do script e você poderá ver os detalhes do erro como este $Error[0] .

ATUALIZAÇÃO: Estou em perda, já que tudo que tentamos não levou a resultados substanciais:

  • A variável $Error está vazia
  • Set-StrictMode -Version Latest não pegou nada
  • $PsVersionTable e powershell_ise.config estão bem para mim

É definitivamente algo estranho acontecendo aqui e eu não acredito que esses campos vazios sejam normais:

Command Name = 
Command Type = 
Script Name = 
Command Path = 

Embora eu ainda tenha algumas ideias para tentar, elas exigem uma pesquisa mais detalhada:

  • Verifique seu script em busca de qualquer método \ objetos do PowerShell (montagens de terceiros, objetos COM etc.) e tente comentá-los.
  • Tente monitorar o processo do PowerShell com o Process Monitor

Boa sorte!

    
por 16.03.2015 / 13:26