Skip to content

Set-NTFSOwner with a filesystem object as a positional parameter #88

Description

@incansvl

Set-NTFSOwner works on files or directories (file system objects), and has the file path as the first parameter. This parameter is an alias of FullName according to the docs (Set-NTFSOwner), so I assumed it would automatially pick up the FullName property of an object that was passed to that parameter.

I was surprised to find that in a typical Powershell loop across a file tree-

    $FileTree = Get-Childitem $Root -Recurse -Force
    foreach ($Item in $FileTree) {
        # Items not owned by the expected user
        if ($Item.Owner -ne 'localmachine\localuser') {
            Set-NTFSOwner $Item -Account 'localmachine\localuser'
        }
    }

this fails with the error Set-NTFSOwner : Unable to find the specified file.

It is fixable by changing key line to-

Set-NTFSOwner $Item.FullName -Account 'localmachine\localuser'
or-
Set-NTFSOwner -Path $Item.FullName -Account 'localmachine\localuser'
Perhaps Set-NTFSOwner is trying to access the relative filename rather than the full path to the file?

I don't think this is consistent with the majority of built-in Powershell cmdlets that operate on files, that seem happy to accept a filesystem object or a full file path for a Path paramater, and do the right thing with either.

Is this behaviour consistent across all the NTFSSecurity cmdlets, or is Set-NTFSOwner differnt in this regard?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions