Browse Source

Added a property to find files with more than one hard link

pull/10/head
Raimund Andée 9 years ago
parent
commit
ed7282956a
  1. 15
      NTFSSecurity/ItemCmdlets/GetChildItem2.cs
  2. 1
      NTFSSecurity/NTFSSecurity.psd1

15
NTFSSecurity/ItemCmdlets/GetChildItem2.cs

@ -3,6 +3,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Management.Automation;
using System.Linq;
namespace NTFSSecurity
{
@ -22,6 +23,7 @@ namespace NTFSSecurity
private SwitchParameter skipMountPoints;
private SwitchParameter skipSymbolicLinks;
private bool getFileSystemModeProperty = false;
private bool identifyHardLinks = false;
private int? depth;
WildcardPattern wildcard = null;
@ -139,6 +141,7 @@ namespace NTFSSecurity
modeMethodInfo = typeof(FileSystemCodeMembers).GetMethod("Mode");
getFileSystemModeProperty = (bool)((Hashtable)MyInvocation.MyCommand.Module.PrivateData)["GetFileSystemModeProperty"];
identifyHardLinks = (bool)((Hashtable)MyInvocation.MyCommand.Module.PrivateData)["IdentifyHardLinks"];
}
protected override void ProcessRecord()
@ -303,6 +306,18 @@ namespace NTFSSecurity
if (getFileSystemModeProperty)
item.Properties.Add(new PSCodeProperty("Mode", modeMethodInfo));
if (identifyHardLinks == true && current is FileInfo)
{
try
{
item.Properties.Add(new PSNoteProperty("HardLinkCount", Alphaleonis.Win32.Filesystem.File.EnumerateHardlinks(current.FullName).Count()));
}
catch
{
WriteDebug(string.Format("Could not read hard links for '{0}'", current.FullName));
}
}
WriteObject(item);
}
}

1
NTFSSecurity/NTFSSecurity.psd1

@ -87,6 +87,7 @@
GetInheritedFrom = $true
GetFileSystemModeProperty = $true
ShowAccountSid = $false
IdentifyHardLinks = $true
PSData = @{
Tags = @('AccessControl', 'ACL', 'DirectorySecurity', 'FileSecurity', 'FileSystem', 'FileSystemSecurity', 'NTFS', 'Module', 'AccessRights')

Loading…
Cancel
Save