Это не мой код, и я действительно не очень разбираюсь в powershell, но у меня есть сценарий для получения доступа к файлам (или что-то еще). Есть ошибка со специальными символами, такими как апострофы, и я знаю об escape-последовательностях, но я разбираюсь в папке, и для каждой папки (и более позднего файла) я использую setaccesscontrol для каждой папки/файла. Я не могу использовать escape-последовательности для каждого из них, поскольку он хранится в переменной $ fol, и каждый цикл будет отличаться. Я полный новичок и не получаю powershell вообще, но я получаю Java, поэтому я основываю свое понимание на этом. Любая помощь приветствуется.Ошибка сценария Powershell с апострофами
foreach($Fol in $Folder2){
$fol = $fol.fullname
$NewOwnerACL = New-Object System.Security.AccessControl.FileSecurity
$Admin = New-Object System.Security.Principal.NTAccount($WhoIsNewOwner)
write-host ...$Admin to $Fol -Fore Yellow
$NewOwnerACL.SetOwner($Admin)
[System.IO.File]::SetAccessControl($fol, $NewOwnerACL)}
Ошибка:
Исключение вызова "SetAccessControl" с "2" аргумент (ы): "C: \ акции \ Операции ... что-то с апострофом"
В C : \ ф \ PermissionFixer.ps1: 28 голец: 5
+ [System.IO.File] :: SetAccessControl ($ Fol, $ NewOwnerACL)
+ ~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:) [], MethodInvocationException
+ CategoryInfo: FileNotFoundException
Edit: я обнаружил, что эти длинные черточки ввинчивается это вверх. Я использую robocopy на этом скрипте, чтобы преодолеть 255 или любой мировой лимит, и я думаю, что это может неправильно читать длинные тире? Есть ли способ обойти это иначе, чем просто разбираться в каждой строке, ища его?
Вам не нужны escape-последовательности - не используется синтаксический анализ строк. Какое сообщение об ошибке _full_ вы получаете? – mklement0
'static void SetAccessControl (строковый путь, System.Security.AccessControl.FileSecurity fileSecurity)' .. вы проверяете, существует ли $ fol path? – Hackerman
@Хакерман Я сделал, и я уверен, что он там. Я думаю, что он получает $ fol от разбора этой папки, поэтому я не уверен, как это испортится. Другие папки и файлы полностью работают, кроме этого. Единственное, что я заметил, это(). –