/// <summary> /// DirectorySummaryリストを取得 /// </summary> /// <param name="path"></param> /// <param name="ignoreSecurity"></param> /// <param name="ignoreTime"></param> /// <param name="ignoreAttributes"></param> /// <param name="ignoreSize"></param> /// <param name="ignoreFiles"></param> /// <param name="isLightFiles"></param> /// <returns></returns> private List <DirectorySummary> GetSummaryList(string path, bool ignoreSecurity, bool ignoreTime, bool ignoreAttributes, bool ignoreSize, bool ignoreFiles, bool isLightFiles) { List <DirectorySummary> summaryList = new List <DirectorySummary>(); int startLength = 0; Action <string> getSummary = null; getSummary = (targetPath) => { DirectorySummary summary = new DirectorySummary(targetPath, startLength, ignoreSecurity, ignoreTime, ignoreAttributes, ignoreSize, ignoreFiles, isLightFiles); summary.Name = ""; summaryList.Add(summary); foreach (string subTargetPath in Directory.GetDirectories(targetPath)) { getSummary(subTargetPath); } }; if (Directory.Exists(path)) { startLength = path.Length; getSummary(path); } return(summaryList); }
protected override void ProcessRecord() { DirectorySummary ds = new DirectorySummary(DirectoryPath, IgnoreSecurity, IgnoreTime, IgnoreAttributes, IgnoreSize, IgnoreFiles, IsLightFiles); WriteObject(ds, true); }
/// <summary> /// Attributesチェック /// </summary> private void CheckAttributes() { string tempAttribute = new DirectorySummary(DirectoryPath, true, true, false, true, true, true).Attributes; if (TestMode == Item.CONTAIN) { string[] tempAttribArray = Functions.SplitComma(tempAttribute); foreach (string attribString in _Attributes.Split(new string[1] { ", " }, StringSplitOptions.RemoveEmptyEntries)) { retValue = tempAttribArray.Any(x => x == attribString); if (!retValue) { Console.Error.WriteLine("属性不一致: {0} / {1}", _Attributes, tempAttribute); break; } } } else { retValue = tempAttribute == _Attributes; if (!retValue) { Console.Error.WriteLine("属性不一致: {0} / {1}", _Attributes, tempAttribute); } } }
/// <summary> /// Accessチェック /// </summary> private void CheckAccess() { string tempAccess = new DirectorySummary(DirectoryPath, false, true, true, true, true, true).Access; if (Access == string.Empty) { retValue = string.IsNullOrEmpty(tempAccess); if (!retValue) { Console.Error.WriteLine("指定のアクセス権無し: \"{0}\" / \"{1}\"", Access, tempAccess); } } else if (TestMode == Item.CONTAIN) { //string tempAccess = new DirectorySummary(Path, false, true, true, true, true, true).Access; string[] tempAccessArray = tempAccess.Split('/'); foreach (string accessString in Access.Split('/')) { retValue = tempAccessArray.Any(x => DirectoryControl.IsMatchAccess(x, accessString)); if (!retValue) { Console.Error.WriteLine("指定のアクセス権無し: {0} / {1}", Access, tempAccess); break; } } } else { //string tempAccess = new DirectorySummary(Path, false, true, true, true, true, true).Access; List <string> accessListA = new List <string>(); accessListA.AddRange(tempAccess.Split('/')); List <string> accessListB = new List <string>(); accessListB.AddRange(Access.Split('/')); if (accessListA.Count == accessListB.Count) { for (int i = accessListA.Count - 1; i >= 0; i--) { string matchString = accessListB.FirstOrDefault(x => DirectoryControl.IsMatchAccess(x, accessListA[i])); if (matchString != null) { accessListB.Remove(matchString); } } retValue = accessListB.Count == 0; } else { retValue = false; } if (!retValue) { Console.Error.WriteLine("アクセス権不一致: {0} / {1}", Access, tempAccess); } } }
/// <summary> /// Ownerチェック /// </summary> private void CheckOwner() { string tempOwner = new DirectorySummary(DirectoryPath, false, true, true, true, true, true).Owner; retValue = Owner.Contains("\\") && tempOwner.Equals(Owner, StringComparison.OrdinalIgnoreCase) || !Owner.Contains("\\") && tempOwner.EndsWith("\\" + Owner, StringComparison.OrdinalIgnoreCase); if (!retValue) { Console.Error.WriteLine("所有者情報不一致: {0} / {1}", Owner, tempOwner); } }
/// <summary> /// Accountチェック /// </summary> private void CheckAccount() { string tempAccess = new DirectorySummary(DirectoryPath, false, true, true, true, true, true).Access; foreach (string tempAccessString in tempAccess.Split('/')) { string tempAccount = tempAccessString.Split(';')[0]; retValue = Account.Contains("\\") && tempAccount.Equals(Account, StringComparison.OrdinalIgnoreCase) || !Account.Contains("\\") && tempAccount.EndsWith("\\" + Account, StringComparison.OrdinalIgnoreCase); if (retValue) { break; } } if (!retValue) { Console.Error.WriteLine("対象アカウントのアクセス権無し: {0} / {1}", Account, tempAccess); } }