web-dev-qa-db-ja.com

PowerShellスクリプトは、Windowsイベントログに多くの警告を生成します

Windows Server 2008R2で実行されている-かなり複雑な-PowerShellスクリプトがあります。 ISEまたはコンソールでスクリプトを実行すると、すべてが正常に実行されます。エラーや目立つものはありません。

ただし、Windowsイベントビューアでは、特定の理由なしに多くの警告が生成されています。

_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:
_

グーグルは何も明らかにしなかった。誰かがこれが何を意味するのか考えていますか?私が言ったように、それらのエントリの数百があります。これ以上投稿する必要があるかどうか教えてください。

どうもありがとう!

編集:要求に応じてイベント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>
_

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>
_
1
silent

ISEまたはコンソールでスクリプトを実行すると、すべてが正常に実行されます。エラーや目立つものはありません。

正常に動作しても、エラーが発生しないという意味ではありません。スクリプトは、コマンドレットで-ErrorAction SilentlyContinueパラメーターを使用して、おそらくそれらを無視します。例:

Get-ChildItem -LiteralPath ZZZ:\

これにより、いわゆる 終了エラー が生成され、現在のパイプラインが停止しますが、 ErrorActionPreference 変数はデフォルトでContinueに設定されているため、スクリプト自体は続行されます実行。また、ご覧のとおり、PowerShellホストはこのエラーをイベントログに記録します。

スクリプトをデバッグして、このログレコードの原因となるエラーを見つけたい場合は、スクリプトの先頭で$ErrorActionPreferenceStopに設定して実行します。最初に発生したエラーはスクリプトの実行を停止し、次のようにエラーの詳細を表示できます$Error[0]

UPDATE:私たちが試したすべてが実質的な結果に至らなかったので、私は途方に暮れています:

  • $Error変数が空です
  • Set-StrictMode -Version Latest何もキャッチしませんでした
  • $PsVersionTablepowershell_ise.configは私には元気そうです

ここで起こっているのは間違いなく奇妙なことであり、これらの空のフィールドが正常であるとは思わない。

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

試すべきアイデアはまだいくつかありますが、より徹底的な調査が必要です。

  • スクリプトでPowerShell以外のオブジェクト\メソッド(サードパーティのアセンブリ、COMオブジェクトなど)を確認し、コメントアウトしてみてください。
  • プロセスモニター でPowerShellプロセスを監視してみてください

幸運を!

1
beatcracker