alanrenouf / vcheck-exchange Goto Github PK
View Code? Open in Web Editor NEWvCheck for Exchange
vCheck for Exchange
I live in Russia. In the name of the mailbox using russian letters.
vCheck-Exchange (ver. 6.15) in the report writes ??????????
How to fix this?
Hi all,
I am running the vCheck Exchange script against my Exchange 2010 SP3 servers with an Active Directory service account that belongs to Exchange View-Only Administrators and Exchange Recipient Administrators (for another script).
The script runs fine in my lab when run manually and via a scheduled task, including plugin 17 for MAPI Connectivity.
However when I run the script with a similarly configured and permissioned service account in my production environment either manually or via scheduled task the MAPI tests fail with the following error:
FAILURE 0 [Microsoft.Exchange.Data.Storage.ObjectNotFoundException]: The process failed to get the correct properties. Inner error [Microsoft.Mapi.MapiExceptionNotFound]: MapiExceptionNotFound: Unable to get properties on object. (hr=0x8004010f, ec=-2147221233) Diagnostic context: Lid: 55847 EMSMDBPOOL.EcPoolSessionDoRpc called [length=204] Lid: 43559 EMSMDBPOOL.EcPoolSessionDoRpc returned [ec=0x0][length=398][latency=0] Lid: 23226 --- ROP Parse Start --- Lid: 27962 ROP: ropOpenFolder [2] Lid: 17082 ROP Error: 0x8004010F Lid: 21857 Lid: 21921 StoreEc: 0x8004010F Lid: 27962 ROP: ropExtendedError [250] Lid: 1494 ---- Remote Context Beg ---- Lid: 26426 ROP: ropOpenFolder [2] Lid: 23921 StoreEc: 0x3EC Lid: 21970 StoreEc: 0x8004010F PropTag: 0x668F0040 Lid: 23921 StoreEc: 0x3EC Lid: 21970 StoreEc: 0x8004010F PropTag: 0x3D2F0003 Lid: 23921 StoreEc: 0x3EC Lid: 21970 StoreEc: 0x8004010F PropTag: 0x672D0003 Lid: 23921 StoreEc: 0x3EC Lid: 21970 StoreEc: 0x8004010F PropTag: 0x672F0014 Lid: 25984 Lid: 6244 StoreEc: 0x80070005 Lid: 5884 StoreEc: 0x80070005 Lid: 24756 Lid: 6527 StoreEc: 0x80070005 Lid: 25984 Lid: 6244 StoreEc: 0x80070005 Lid: 5884 StoreEc: 0x80070005 Lid: 24756 Lid: 6527 StoreEc: 0x80070005 Lid: 6719 StoreEc: 0x80070005 Lid: 7007 StoreEc: 0x80070005 Lid: 48671 Lid: 1750 ---- Remote Context End ---- Lid: 27962 ROP: ropGetPropsSpecific [7] Lid: 17082 ROP Error: 0x4B9 Lid: 26465 Lid: 21921 StoreEc: 0x4B9 Lid: 27962 ROP: ropExtendedError [250] Lid: 1494 ---- Remote Context Beg ---- Lid: 26426 ROP: ropGetPropsSpecific [7] Lid: 36739 Lid: 1750 ---- Remote Context End ---- Lid: 26849 Lid: 21817 ROP Failure: 0x4B9 Lid: 20385 Lid: 28577 StoreEc: 0x8004010F Lid: 32001 Lid: 29953 StoreEc: 0x8004010F
If I run the script with my own account which is an Exchange Organization Administrator it runs fine no errors. If I run the script powershell code, while logged in as the service account, from the Exchange Management Shell copying the plugin code line by line and piping the results to Format-Table it also runs fine. I am of the opinion that permissions are not a problem since the script runs in my lab and when the script code is copied to the EMS.
Has anyone else seen this issue? If so, were you able to resolve it? How?
There's a bug in this script where it tries to write to the $error variable. This is a reserved powershell variable, so it needs to be changed to something else.
So change this block:
if ( $writerName -like "Microsoft Exchange*" ) {
$state = $writers[ $lineNum + 3 ].trim()
$error = $writers[ $lineNum + 4 ].trim()
Add-Member -InputObject $px -MemberType NoteProperty -Name "State" -Value $state.substring( 7, $state.length-7 )
Add-Member -InputObject $px -MemberType NoteProperty -Name "Error" -Value $error.substring( 12, $error.length-12 )
# add the resulting object to the array holding all the data
$allVSSWritersList += $px
# reset the results object for the next writer
$px = NewVSSObject -Server $server
}
To this:
if ( $writerName -like "Microsoft Exchange*" ) {
$state = $writers[ $lineNum + 3 ].trim()
$vsserror = $writers[ $lineNum + 4 ].trim()
Add-Member -InputObject $px -MemberType NoteProperty -Name "State" -Value $state.substring( 7, $state.length-7 )
Add-Member -InputObject $px -MemberType NoteProperty -Name "Error" -Value $vsserror.substring( 12, $vsserror.length-12 )
# add the resulting object to the array holding all the data
$allVSSWritersList += $px
# reset the results object for the next writer
$px = NewVSSObject -Server $server
}
Also, an alternative to the Invoke-Command call, you can use psexec, such as:
n
r"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.