我有一个在 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:
谷歌没有透露任何内容。有谁知道这可能意味着什么?正如我所说,这些条目有数百个。让我知道我是否应该发布更多内容。
非常感谢!
编辑:根据要求整个事件 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>
运行良好并不意味着没有遇到错误。您的脚本可能只是忽略它们,使用
-ErrorAction SilentlyContinue
带有 cmdlet 的参数。例子:这将产生所谓的终止错误并停止当前管道,但由于ErrorActionPreference变量默认设置为
Continue
,脚本本身将继续执行。而且,如您所见,PowerShell 主机会将此错误记录到事件日志中。如果您想调试脚本并查找导致此日志记录的错误,请在脚本开头设置
$ErrorActionPreference
为并运行它。Stop
第一个遇到的错误将停止脚本执行,然后您可以像这样查看错误详细信息$Error[0]
。更新:我不知所措,因为我们尝试的一切都没有带来实质性的结果:
$Error
变量为空Set-StrictMode -Version Latest
什么都没抓到$PsVersionTable
在我看来powershell_ise.config
很好这里发生的事情绝对很奇怪,我不相信那些空字段是正常的:
虽然我还有一些想法可以尝试,但它们需要更深入的研究:
祝你好运!