Я пытаюсь написать скрипт, который собирает информацию о файлах в папке и выводит в CSV. Все работает, пока я не изменил разрешения для конечного пользователя (обычный пользователь, чтение + выполнение, windows). Скрипт не может захватить глобальные переменные и, хотя он работает как переменные скрипта, вывод неправильный. (сценарий несколько усеченный)
$global:filecount = 1
Get-ChildItem C:\temp\data\ -Recurse -include @("*.txt*","*.pdf") |
Select-Object CreationTime,
@{Name = "Date Added";Expression={get-date}},
@{Name = "User Added";E={$env:UserName}},
@{n ='SHA1';e={(Get-FileHash $_ -Algorithm SHA1).Hash}}
@{n ='SHA256';e={(Get-FileHash $_ -Algorithm SHA256).Hash}}
@{n = "Filecount"; Expression = {$global:filecount; $global:filecount++}} |
Export-Csv $output_location -append
если глобальный, вывод filecount равен 0 для учетных записей без прав администратора. если переменная уровня сценария и реальное количество файлов равно 1, вывод составляет 1 1 1
Как я могу это исправить? Я новичок в powershell, а не производитель скриптов по профессии, поэтому я могу пропустить некоторые логи c здесь.
Кроме того, скрипт имеет длину около 800 строк. Любая другая переменная работает. Большинство сценариев - это вводимые пользователем значения переменных, которые экспортируются в CSV. Только учетная запись файла терпит неудачу.
Спасибо всем.
Редактировать для уточнения. Выходные данные создают CSV-файл таким образом, чтобы поля были отформатированы ниже: введите описание изображения здесь
CreationTime Дата добавлена в БД Пользователь добавлен в БД от Intel Source sourceID FileID BaseName Расширение Папка Килобайты SHA1 SHA256 SHA512 MD5