2016-12-13 12 views
0

私の状況はかなり特定なので、私は誰かが私を助けることができるいくつかの洞察力を持っていることを望んでいると思います。BMCの救済ARドライバクラッシュpowershell

コード

$id = Get-Credential "REMEDY\$($env:USERNAME)" 
$userId = $id.UserName.split("\")[1].tolower() 
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($id.password) 
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) 

$cn = New-Object -comobject ADODB.Connection 
$rs = New-Object -comobject ADODB.Recordset 
$b = "Group5" 
$c = "DSN=AR System ODBC Data Source;ARServer=remedyServer;ARServerPort=7130;UID=$userId;PWD=$password" 
$cn.Open($c) 
$q = "SELECT AuditTrail FROM HPD_HelpDesk WHERE AssignedToGroup='$b'" 
$rs.Open($q, $cn) 
while (!$rs.EOF) { 
    $rs.Fields.item(0).value 
    $rs.MoveNext() 
} 
$rs.close() 
$cn.close() 

ドライバ:

Name: AR System ODBC Driver 
Version: 7.06.04.30000 
File: ARODBC7604_BUILD02.DLL 

問題

のWindows 7 32ビット、PowerShellのv4の下では、すべてがエラーなしで100%の時間を動作します。 は、Windows 10、64ビット、それは(PowerShellのx86のを強制するか、それは文句を言わないで、すべてのODBCドライバを参照してください、それが問題よりも迷惑なんだ)時間の約5%を働く

エラー

の下で、私は苦労しましたこれが起こったときPowershellが完全に即座に終了するので、エラーが発生することもありますが、CMDから実行すると、出力が閉じる前に出力が表示されます。ここに私が得るエラーがあります、そしてまったく同じコードが時々動作します。実際にクラッシュしているラインは、$ rs.fields.item(0)あなたはドライバを更新し、それを確認してくださいでした.VALUEライン

Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 
    at IDispatchInvoke(IntPtr , Int32 , INVOKEKIND , DISPPARAMS& , Variant& , ExcepInfo& , UInt32&) 
    at System.Management.Automation.ComInterop.UnsafeMethods.IDispatchInvoke(IntPtr dispatchPointer, Int32 memberDispId, INVOKEKIND flags, DISPPARAMS& dispParams, Variant& result, ExcepInfo& excepInfo, UInt32& argErr) 
    at CallSite.Target(Closure , CallSite , ComObject) 
    at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) 
    at CallSite.Target(Closure , CallSite , Object) 
    at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) 
    at System.Management.Automation.Interpreter.DynamicInstruction`2.Run(InterpretedFrame frame) 
    at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 
    at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 
    at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 
    at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 
    at System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame) 
    at System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0) 
    at System.Management.Automation.DlrScriptCommandProcessor.RunClause(Action`1 clause, Object dollarUnderbar, Object inputToProcess) 
    at System.Management.Automation.DlrScriptCommandProcessor.Complete() 
    at System.Management.Automation.CommandProcessorBase.DoComplete() 
    at System.Management.Automation.Internal.PipelineProcessor.DoCompleteCore(CommandProcessorBase commandRequestingUpstreamCommandsToStop) 
    at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input) 
    at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 
    at System.Management.Automation.Interpreter.ActionCallInstruction`6.Run(InterpretedFrame frame) 
    at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 
    at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 
    at System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame) 
    at System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0) 
    at System.Management.Automation.DlrScriptCommandProcessor.RunClause(Action`1 clause, Object dollarUnderbar, Object inputToProcess) 
    at System.Management.Automation.DlrScriptCommandProcessor.Complete() 
    at System.Management.Automation.CommandProcessorBase.DoComplete() 
    at System.Management.Automation.Internal.PipelineProcessor.DoCompleteCore(CommandProcessorBase commandRequestingUpstreamCommandsToStop) 
    at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input) 
    at System.Management.Automation.Runspaces.LocalPipeline.InvokeHelper() 
    at System.Management.Automation.Runspaces.LocalPipeline.InvokeThreadProc() 
    at System.Management.Automation.Runspaces.PipelineThread.WorkerProc() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 
+0

これはWindows 10と互換性のないドライバではありませんか?私はこれがパワーシェルの問題であるとは想像できません。 BMCの修復アプリケーション自体がシステム上で正しく機能していますか? –

+0

はいBMC修復アプリケーションはExcelでこのDSNを使用するMicrosoft Queryと同様に100%動作します。たぶん私はAuditTrailのような唯一の大きなフィールドに注意する必要があります、私は牛が家に帰るまでCaseID_を引き出すことができます – TetraFlash

+0

64ビットExcelまたは32ビットExcelから時間の100% –

答えて

0

です。これは、スクリプトよりドライバの問題に似ています。それでも他の64ビットシステムで試してみることをお勧めします。そうすれば、少なくともあなたは問題を絞り込むことができます。

希望すると、それはあなたに相談します。

+0

残念なことに、Remedyアプリケーションが完全に機能するこのドライバは残念ですが、Microsoft QueryでExcelで実行された同じクエリと同じように、素晴らしいプレーをしたくないPowershellだけが – TetraFlash

+0

の痛みを理解できます。しかし、実際この場合、私は無力です。どのように同じスクリプトが毎回異なる出力を出すことができますか?私はインフルエンザを治療するBMCをテストしていません。私はそれをテストしなければならない –

0

私は、以前の方法が失敗した一方で、これは、働く理由はわかりませんが、これは

​​

私はこれが事実である理由の説明を大好きだと動作しますが、少なくともその作業:)

関連する問題