fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7.  
  8. public class Test
  9. {
  10.  
  11. private static string DCDAIG_START_STRING = @"テストを開始しています";
  12. private static string LDAP_ERROR_STRING1 = @"失敗";
  13.  
  14. public static void Main()
  15. {
  16. // your code goes here
  17. if(CheckDC())
  18. {
  19. Console.WriteLine(@"Success");
  20. }else{
  21. Console.WriteLine(@"Error!");
  22. }
  23. }
  24.  
  25. public static bool CheckDC()
  26. {
  27. // 除外するテストを取得
  28. string[] exclutionTest = {@"DFSREvent", @"Replications"} ;
  29.  
  30. // コマンド実行
  31.  
  32. string resultString = @"ディレクトリ サーバー診断\n\n\n初期セットアップを実行しています:\n\n ホーム サーバーの検索を試みています.\n\n ホーム サーバー = ldap-server1\n\n * AD フォレストが識別されました。 \n 初期情報の収集が完了しました。\n\n\n必須の初期テストを実行しています\n\n \n サーバーをテストしています: Default-First-Site-NameLDAP-SERVER1\n\n テストを開始しています: Connectivity\n\n . LDAP-SERVER1 はテスト Connectivity に合格しました\n\n \n サーバーをテストしています: Default-First-Site-NameLDAP-SERVER2\n\n テストを開始しています: Connectivity\n\n . LDAP-SERVER2 はテスト Connectivity に合格しました\n\n\n\nプライマリ テストを実行しています\n\n \n サーバーをテストしています: Default-First-Site-NameLDAP-SERVER1\n\n テストを開始しています: Advertising\n\n . LDAP-SERVER1 はテスト Advertising に合格しました\n\n テストを開始しています: FrsEvent\n\n . LDAP-SERVER1 はテスト FrsEvent に合格しました\n\n テストを開始しています: DFSREvent\n\n . LDAP-SERVER1 はテスト DFSREvent に合格しました\n\n テストを開始しています: SysVolCheck\n\n . LDAP-SERVER1 はテスト SysVolCheck に合格しました\n\n テストを開始しています: KccEvent\n\n 警告イベントが発生しました。イベント ID: 0x80000603\n\n 生成日時: 01/19/2015 09:48:29\n\n イベント文字列:\n\n Active Directory ドメイン サービスは、次のハード ディスク上の、ソフトウェア ベースのディスク書き込みキャッシュを無効にできませんでした。 \n\n\n 警告イベントが発生しました。イベント ID: 0x80000B46\n\n 生成日時: 01/19/2015 09:48:31\n\n イベント文字列:\n\n このディレクトリ サーバーのセキュリティは、署名 (整合性の確認) を要求しない SASL (ネゴシエート、Kerberos、NTLM または ダイジェスト) LDAP バインド、およびクリア テキスト (SSL/TLS 暗号化がされていない) 接続上で実行される LDAP 簡易 バインドを拒否するようサーバーを設定することで、大幅に強化することができます。これらのバインドを使用する クライアントが 1 つもない場合でも、拒否するようにサーバーを構成することで、サーバーのセキュリティが強化されます。 \n\n\n . LDAP-SERVER1 はテスト KccEvent に合格しました\n\n テストを開始しています: KnowsOfRoleHolders\n\n . LDAP-SERVER1 はテスト KnowsOfRoleHolders に合格しました\n\n テストを開始しています: MachineAccount\n\n . LDAP-SERVER1 はテスト MachineAccount に合格しました\n\n テストを開始しています: NCSecDesc\n\n . LDAP-SERVER1 はテスト NCSecDesc に合格しました\n\n テストを開始しています: NetLogons\n\n . LDAP-SERVER1 はテスト NetLogons に合格しました\n\n テストを開始しています: ObjectsReplicated\n\n . LDAP-SERVER1 はテスト ObjectsReplicated に合格しました\n\n テストを開始しています: Replications\n\n . LDAP-SERVER1 はテスト Replications に合格しました\n\n テストを開始しています: RidManager\n\n . LDAP-SERVER1 はテスト RidManager に合格しました\n\n テストを開始しています: Services\n\n . LDAP-SERVER1 はテスト Services に合格しました\n\n テストを開始しています: SystemLog\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:46:12\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:46:12\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:46:12\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:48:29\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:48:29\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:48:29\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x8000001D\n\n 生成日時: 01/19/2015 09:48:32\n\n イベント文字列:\n\n スマート カード ログオンに使用できる適切な証明書をキー配布センター (KDC) が検出できなかったか、KDC 証明書を確認できませんでした。この問題が解決しない場合、スマート カード ログオンが正しく機能しない可能性があります。この問題を解決するには、certutil.exe を使用して既存の KDC 証明書を確認するか、新しい KDC 証明書を登録してください。\n\n 警告イベントが発生しました。イベント ID: 0x00001695\n\n 生成日時: 01/19/2015 09:49:03\n\n イベント文字列:\n\n DNS ドメイン 'ifax.ytc.local.' に関連付けられた、1 つ以上の DNS レコードの動的な登録または 削除に失敗しました。これらのレコードは、他のコンピューターがこのサーバーを ドメイン コントローラー (指定されたドメインが Active Directory ドメインである場合) または LDAP サーバー (指定されたドメインがアプリケーション パーティションである 場合) として検出するのに使用されます。 \n\n\n 警告イベントが発生しました。イベント ID: 0x00001695\n\n 生成日時: 01/19/2015 09:49:03\n\n イベント文字列:\n\n DNS ドメイン 'DomainDnsZones.ifax.ytc.local.' に関連付けられた、1 つ以上の DNS レコードの動的な登録または 削除に失敗しました。これらのレコードは、他のコンピューターがこのサーバーを ドメイン コントローラー (指定されたドメインが Active Directory ドメインである場合) または LDAP サーバー (指定されたドメインがアプリケーション パーティションである 場合) として検出するのに使用されます。 \n\n\n 警告イベントが発生しました。イベント ID: 0x000003F6\n\n 生成日時: 01/19/2015 09:49:03\n\n イベント文字列:\n\n 名前 _msdcs.ifax.ytc.local の名前解決は、構成されたどの DNS サーバーからも応答がなく、タイムアウトしました。\n\n . LDAP-SERVER1 はテスト SystemLog に合格しました\n\n テストを開始しています: VerifyReferences\n\n . LDAP-SERVER1 はテスト VerifyReferences に合格しました\n\n \n サーバーをテストしています: Default-First-Site-NameLDAP-SERVER2\n\n テストを開始しています: Advertising\n\n . LDAP-SERVER2 はテスト Advertising に合格しました\n\n テストを開始しています: FrsEvent\n\n . LDAP-SERVER2 はテスト FrsEvent に合格しました\n\n テストを開始しています: DFSREvent\n\n SYSVOL の共有後、この 24 時間以内に発生した警告またはエラー イベントがあります。 SYSVOL\n\n レプリケーション失敗の問題があると、グループ ポリシーの問題が発生する場合 があります。 \n . LDAP-SERVER2 はテスト DFSREvent に失敗しました\n\n テストを開始しています: SysVolCheck\n\n . LDAP-SERVER2 はテスト SysVolCheck に合格しました\n\n テストを開始しています: KccEvent\n\n . LDAP-SERVER2 はテスト KccEvent に合格しました\n\n テストを開始しています: KnowsOfRoleHolders\n\n . LDAP-SERVER2 はテスト KnowsOfRoleHolders に合格しました\n\n テストを開始しています: MachineAccount\n\n . LDAP-SERVER2 はテスト MachineAccount に合格しました\n\n テストを開始しています: NCSecDesc\n\n . LDAP-SERVER2 はテスト NCSecDesc に合格しました\n\n テストを開始しています: NetLogons\n\n . LDAP-SERVER2 はテスト NetLogons に合格しました\n\n テストを開始しています: ObjectsReplicated\n\n . LDAP-SERVER2 はテスト ObjectsReplicated に合格しました\n\n テストを開始しています: Replications\n\n [Replications Check、LDAP-SERVER2] 最近のレプリケーション試行は失敗しました:\n\n LDAP-SERVER1 から LDAP-SERVER2\n\n 名前付けコンテスト: DC=ForestDnsZones,DC=ifax,DC=ytc,DC=local\n\n レプリケーションでエラーが生成されました (1256):\n\n リモート システムは利用できません。ネットワークのトラブルシューティングについては、Windows ヘルプを参照してください。\n\n 2015-01-19 09:47:07 でエラーが発生しました。\n\n 前回の成功は 2015-01-19 08:47:07 です。\n\n 前回の成功から、1 回エラーが発生しました。\n\n [Replications Check、LDAP-SERVER2] 最近のレプリケーション試行は失敗しました:\n\n LDAP-SERVER1 から LDAP-SERVER2\n\n 名前付けコンテスト: DC=DomainDnsZones,DC=ifax,DC=ytc,DC=local\n\n レプリケーションでエラーが生成されました (1256):\n\n リモート システムは利用できません。ネットワークのトラブルシューティングについては、Windows ヘルプを参照してください。\n\n 2015-01-19 09:47:07 でエラーが発生しました。\n\n 前回の成功は 2015-01-19 08:47:07 です。\n\n 前回の成功から、1 回エラーが発生しました。\n\n [Replications Check、LDAP-SERVER2] 最近のレプリケーション試行は失敗しました:\n\n LDAP-SERVER1 から LDAP-SERVER2\n\n 名前付けコンテスト: CN=Schema,CN=Configuration,DC=ifax,DC=ytc,DC=local\n\n レプリケーションでエラーが生成されました (1753):\n\n エンドポイント マッパーから使用できるエンドポイントはこれ以上ありません。\n\n 2015-01-19 09:47:07 でエラーが発生しました。\n\n 前回の成功は 2015-01-19 08:47:07 です。\n\n 前回の成功から、1 回エラーが発生しました。\n\n LDAP-SERVER1 上のディレクトリは起動またはシャットダウンの処理中のため\n\n 利用できません。\n\n ブート中にコンピューターがハングしていないことを確認してください。\n\n [Replications Check、LDAP-SERVER2] 最近のレプリケーション試行は失敗しました:\n\n LDAP-SERVER1 から LDAP-SERVER2\n\n 名前付けコンテスト: CN=Configuration,DC=ifax,DC=ytc,DC=local\n\n レプリケーションでエラーが生成されました (1753):\n\n エンドポイント マッパーから使用できるエンドポイントはこれ以上ありません。\n\n 2015-01-19 09:47:07 でエラーが発生しました。\n\n 前回の成功は 2015-01-19 09:43:34 です。\n\n 前回の成功から、1 回エラーが発生しました。\n\n LDAP-SERVER1 上のディレクトリは起動またはシャットダウンの処理中のため\n\n 利用できません。\n\n ブート中にコンピューターがハングしていないことを確認してください。\n\n [Replications Check、LDAP-SERVER2] 最近のレプリケーション試行は失敗しました:\n\n LDAP-SERVER1 から LDAP-SERVER2\n\n 名前付けコンテスト: DC=ifax,DC=ytc,DC=local\n\n レプリケーションでエラーが生成されました (1753):\n\n エンドポイント マッパーから使用できるエンドポイントはこれ以上ありません。\n\n 2015-01-19 09:47:07 でエラーが発生しました。\n\n 前回の成功は 2015-01-19 09:43:36 です。\n\n 前回の成功から、1 回エラーが発生しました。\n\n LDAP-SERVER1 上のディレクトリは起動またはシャットダウンの処理中のため\n\n 利用できません。\n\n ブート中にコンピューターがハングしていないことを確認してください。\n\n . LDAP-SERVER2 はテスト Replications に失敗しました\n\n テストを開始しています: RidManager\n\n . LDAP-SERVER2 はテスト RidManager に合格しました\n\n テストを開始しています: Services\n\n . LDAP-SERVER2 はテスト Services に合格しました\n\n テストを開始しています: SystemLog\n\n . LDAP-SERVER2 はテスト SystemLog に合格しました\n\n テストを開始しています: VerifyReferences\n\n . LDAP-SERVER2 はテスト VerifyReferences に合格しました\n\n \n \n \n パーティション テストを実行しています: ForestDnsZones\n\n テストを開始しています: CheckSDRefDom\n\n . ForestDnsZones はテスト CheckSDRefDom に合格しました\n\n テストを開始しています: CrossRefValidation\n\n . ForestDnsZones はテスト CrossRefValidation\n\n に合格しました\n\n \n パーティション テストを実行しています: DomainDnsZones\n\n テストを開始しています: CheckSDRefDom\n\n . DomainDnsZones はテスト CheckSDRefDom に合格しました\n\n テストを開始しています: CrossRefValidation\n\n . DomainDnsZones はテスト CrossRefValidation\n\n に合格しました\n\n \n パーティション テストを実行しています: Schema\n\n テストを開始しています: CheckSDRefDom\n\n . Schema はテスト CheckSDRefDom に合格しました\n\n テストを開始しています: CrossRefValidation\n\n . Schema はテスト CrossRefValidation に合格しました\n\n \n パーティション テストを実行しています: Configuration\n\n テストを開始しています: CheckSDRefDom\n\n . Configuration はテスト CheckSDRefDom に合格しました\n\n テストを開始しています: CrossRefValidation\n\n . Configuration はテスト CrossRefValidation\n\n に合格しました\n\n \n パーティション テストを実行しています: ifax\n\n テストを開始しています: CheckSDRefDom\n\n . ifax はテスト CheckSDRefDom に合格しました\n\n テストを開始しています: CrossRefValidation\n\n . ifax はテスト CrossRefValidation に合格しました\n\n \n エンタープライズ テストを実行しています: ifax.ytc.local\n\n テストを開始しています: LocatorCheck\n\n . ifax.ytc.local はテスト LocatorCheck に合格しました\n\n テストを開始しています: Intersite\n\n . ifax.ytc.local はテスト Intersite に合格しました";
  33. List<string> stringList = new List<string>();
  34. int sIndex = resultString.IndexOf(DCDAIG_START_STRING);
  35. int eIndex = 0;
  36. while (sIndex >= 0)
  37. {
  38. eIndex = resultString.IndexOf(DCDAIG_START_STRING, sIndex + DCDAIG_START_STRING.Length) - 1;
  39. stringList.Add(resultString.Substring(sIndex, eIndex));
  40. sIndex = eIndex + 1;
  41. }
  42. eIndex = resultString.Length - 1;
  43. stringList.Add(resultString.Substring(sIndex, eIndex));
  44.  
  45. bool isResult = true;
  46. foreach(string str in stringList)
  47. {
  48. string[] array = str.Split('\n');
  49. bool isExclusion = false;
  50. foreach(string search in exclutionTest)
  51. {
  52. if (array[array.Length - 1].IndexOf(search) != -1)
  53. {
  54. isExclusion = true;
  55. break;
  56. }
  57. }
  58. if (isExclusion)
  59. {
  60. continue;
  61. }
  62. if (array[array.Length - 1].IndexOf(LDAP_ERROR_STRING1) != -1)
  63. {
  64. isResult = false;
  65. break;
  66. }
  67.  
  68. }
  69. return isResult;
  70. }
  71. }
Runtime error #stdin #stdout #stderr 0.06s 28464KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Unhandled Exception:
System.ArgumentOutOfRangeException: startIndex + length cannot exceed length of string.
Parameter name: length
  at System.String.Substring (Int32 startIndex, Int32 length) [0x00000] in <filename unknown>:0 
  at Test.CheckDC () [0x00000] in <filename unknown>:0 
  at Test.Main () [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentOutOfRangeException: startIndex + length cannot exceed length of string.
Parameter name: length
  at System.String.Substring (Int32 startIndex, Int32 length) [0x00000] in <filename unknown>:0 
  at Test.CheckDC () [0x00000] in <filename unknown>:0 
  at Test.Main () [0x00000] in <filename unknown>:0