Windows-Server-2008-R2

PowerShell 腳本在 Windows 事件日誌中生成大量警告

  • September 13, 2016

我有一個在 Windows Server 2008 R2 上執行的相當複雜的 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:

Google沒有透露任何內容。有誰知道這可能意味著什麼?正如我所說,這些條目有數百個。讓我知道我是否應該發布更多內容。

非常感謝!

編輯:根據要求整個事件 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>

在 ISE 或控制台中執行腳本時,一切正常。沒有錯誤或任何其他會脫穎而出的東西。

執行良好並不意味著沒有遇到錯誤。您的腳本可能只是忽略它們,使用-ErrorAction SilentlyContinue帶有 cmdlet 的參數。例子:

Get-ChildItem -LiteralPath ZZZ:\

這將產生所謂的終止錯誤並停止目前管道,但由於ErrorActionPreference變數預設設置為Continue,腳本本身將繼續執行。而且,如您所見,PowerShell 主機會將此錯誤記錄到事件日誌中。

如果您想調試腳本並找出導致此日誌記錄的錯誤,請在腳本開頭設置$ErrorActionPreference為並執行它。Stop第一個遇到的錯誤將停止腳本執行,然後您可以像這樣查看錯誤詳細資訊$Error[0]

**更新:**我不知所措,因為我們嘗試的一切都沒有帶來實質性的結果:

  • $Error變數為空
  • Set-StrictMode -Version Latest什麼都沒抓到
  • $PsVersionTable在我看來powershell_ise.config很好

這裡發生的事情絕對很奇怪,我不相信那些空欄位是正常的:

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

雖然我還有一些想法可以嘗試,但它們需要更深入的研究:

祝你好運!

引用自:https://serverfault.com/questions/675793