PS c:\> Compare-SourceFiles -Source1 \\server1\c$\prod -Source2 \\server2\c$\dev -ACLs WARNING: Files missing from '\\server1\c$\prod': 3 \FrameXML.log \gx.log \Sound.log WARNING: File Hash different: '\a.exe' WARNING: ACL Access Permissions different: '\a.exe' File Permissions: '\\server1\c$\prod\a.exe' FileSystemRights AccessControlType IdentityReference IsInherited InheritanceFlags PropagationFlags ---------------- ----------------- ----------------- ----------- ---------------- ---------------- FullControl Allow BUILTIN\Administrators False None None FullControl Allow NT AUTHORITY\SYSTEM False None None FullControl Allow DOMAIN\User1 False None None File Permissions: '\\server2\c$\dev\a.exe' FileSystemRights AccessControlType IdentityReference IsInherited InheritanceFlags PropagationFlags ---------------- ----------------- ----------------- ----------- ---------------- ---------------- FullControl Allow BUILTIN\Administrators False None None ReadAndExecute, Synchronize Allow Everyone False None None Modify, Synchronize Allow NT AUTHORITY\Authenticated Users False None None FullControl Allow NT AUTHORITY\SYSTEM False None None WARNING: File Hash different: '\connection.log' InputObject SideIndicator ----------- ------------- 2/16 16:02:39.744 GRUNT: state: LOGIN_STATE_CONNECTING result: LOGIN_OK => 2/16 16:02:39.946 GRUNT: state: LOGIN_STATE_AUTHENTICATING result: LOGIN_OK => 2/16 16:02:40.128 GRUNT: state: LOGIN_STATE_CHECKINGVERSIONS result: LOGIN_OK => 2/16 16:02:40.205 GRUNT: state: LOGIN_STATE_HANDSHAKING result: LOGIN_OK => 2/16 16:02:40.375 GRUNT: state: LOGIN_STATE_AUTHENTICATED result: LOGIN_OK => 2/16 16:02:40.375 ClientConnection Initiating: COP_CONNECT code=CSTATUS_CONNECTING => 2/16 16:02:40.708 ClientConnection Completed: COP_CONNECT code=RESPONSE_CONNECTED result=TRUE => 2/16 16:02:40.724 ClientConnection Initiating: COP_AUTHENTICATE code=CSTATUS_AUTHENTICATING => 2/16 16:02:41.311 ClientConnection Completed: COP_AUTHENTICATE code=AUTH_OK result=TRUE => 2/16 16:02:41.780 ClientConnection Initiating: COP_GET_CHARACTERS code=43 => 2/16 16:02:42.286 ClientConnection Completed: COP_GET_CHARACTERS code=44 result=TRUE => 2/16 16:02:59.661 GRUNT: state: LOGIN_STATE_DISCONNECTED result: LOGIN_OK => 2/16 16:03:03.816 ClientConnection Initiating: COP_LOGIN_CHARACTER code=77 => 2/16 16:03:04.237 ClientConnection Completed: COP_LOGIN_CHARACTER code=78 result=TRUE => 2/16 16:01:53.409 GRUNT: state: LOGIN_STATE_CONNECTING result: LOGIN_OK <= 2/16 16:02:14.449 GRUNT: state: LOGIN_STATE_FAILED result: LOGIN_CONVERSION_REQUIRED <= 2/16 16:02:14.453 GRUNT: state: LOGIN_STATE_FAILED result: LOGIN_CONVERSION_REQUIRED <= WARNING: File Hash different: '\cpu.log' InputObject SideIndicator ----------- ------------- 2/16 16:02:30.896 vendor: 1 => 2/16 16:02:30.896 features: 00000397 => 2/16 16:02:30.896 cores: 2 => 2/16 16:02:30.896 threads: 4 => 2/16 16:02:30.896 vendor id string= GenuineIntel => 2/16 16:02:30.896 standard (13): 1b=02100800 1c=7FDAFBBF 1d=bfebfbff 4a=1C004121 => 2/16 16:02:30.896 extended (8): 1c=00000021 1d=2c100000 8c=00000000 => 2/16 16:02:30.896 processor brand string= Intel(R) Core(TM) i5-4670K CPU @ 3.40GHz => 2/16 16:01:42.716 vendor: 1 <= 2/16 16:01:42.716 features: 00000397 <= 2/16 16:01:42.716 cores: 2 <= 2/16 16:01:42.716 threads: 4 <= 2/16 16:01:42.716 vendor id string= GenuineIntel <= 2/16 16:01:42.716 standard (13): 1b=00100800 1c=7FDAFBBF 1d=bfebfbff 4a=1C004121 <= 2/16 16:01:42.716 extended (8): 1c=00000021 1d=2c100000 8c=00000000 <= 2/16 16:01:42.716 processor brand string= Intel(R) Core(TM) i5-4670K CPU @ 3.40GHz <= ============================== File Source Comparison Summary ============================== Path FileCount MissingFiles SharedFiles DifferentHashes DifferentACLs ---- --------- ------------ ----------- --------------- ------------- \\server1\c$\prod 3 3 3 3 1 \\server2\c$\dev 6 0 3 3 1
About Me
My Links
Sunday, June 28, 2015
Powershell Script - Compare-SourceFiles - source code comparison between environments (prod, bcp, qa, dev)
I just built this little script this weekend while troubleshooting a release. We needed a way to compare the code between different environments as well as compare folder permission security within environments on different nodes in the farm. This function does exactly that, producing a nice report (use -ReportFile to output to a file as well) used to prevent change drift and environment variance. If the files are text files, a line by line comparison is also generated should the file hashes be different, which shows specific lines that are different. Binary files are still flagged as different should their MD5 hashes be different. When checking ACLs, effective file permissions are displayed for each source which can speed up troubleshooting permissions issues.
Labels:
Code Deployment,
DevOps,
Powershell,
Reports
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment