Как PS Move-Item с включенным наследованием? - PullRequest
1 голос
/ 13 января 2020

Я перемещаю пакеты NuGet в локальную сетевую папку с помощью этой команды

move-Item xyz.nupkg -Dest $env:nugetsDir

У меня проблема в том, что файл не наследует разрешение от папки назначения, а мой друг получает «доступ запрещен» ошибка при попытке использовать мой пакет. Проблема НЕ возникает, когда и переместить файл вручную, с помощью мыши.

1 Ответ

0 голосов
/ 13 января 2020

Я считаю Robocopy неинтуитивным, поэтому я создал специальную программу на основе этого решения .

using System.IO;
using cnc.console.options;
using System.Security.AccessControl;

namespace FilesMove {
    class Program {

        //...

        static void Main(string[] args) {   
            ops.parseArguments(args);
            var src = ops.get<SourceOption>(0);
            var dst = ops.get<DestinationOption>(0);
            var dstFile = Path.Combine(dst, Path.GetFileName(src));
            File.Move(src, dstFile);

            if (ops.isSet<InheritPermissionsOption>()) {
                var outAcc = new FileSecurity();
                outAcc.SetAccessRuleProtection(false, false);
                File.SetAccessControl(dstFile, outAcc);
            }
        }

    }
}
...