Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        protected override void ProcessRecord()
        {
            DirectorySummary ds = new DirectorySummary(DirectoryPath,
                                                       IgnoreSecurity, IgnoreTime, IgnoreAttributes, IgnoreSize, IgnoreFiles, IsLightFiles);

            WriteObject(ds, true);
        }
Exemplo n.º 3
0
        /// <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);
                }
            }
        }
Exemplo n.º 4
0
        /// <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);
                }
            }
        }
Exemplo n.º 5
0
        /// <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);
            }
        }
Exemplo n.º 6
0
        /// <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);
            }
        }