Попытка создать фиктивные файлы, каталоги и подкаталоги случайным образом на N уровней.
В каждом каталоге / подкаталоге должны быть файлы.
Я смог предоставить каталог и получить случайные папки, созданные со случайными файлами внутри, но у меня возникли проблемы с циклом для перехода на N уровней.
Вот что у меня есть:
function New-DemoData ($Path)
{
# Usage: New-DemoData “D:\Company”
Push-Location
1..10 | % { Set-Location -Path (New-Item -ItemType directory -Name $([System.Guid]::NewGuid().ToString()) -path "$path\").fullname -ErrorAction SilentlyContinue
for ( $i=1; $i -le (Get-Random -Minimum 10 -Maximum 200); $i++ )
{
#2147483648 bytes = 2GB
#20971520 = 20MB
fsutil file createnew ($([System.Guid]::NewGuid().ToString()) + ".txt") (Get-Random -Minimum 1024 -Maximum 20971520)
}
}
Pop-Location
}
Есть несколько приемов, позволяющих упростить код.
Вы можете создавать столько вложенных папок, сколько необходимо, и все с помощью одной команды, если путь указан полностью. Например, если у вас есть c:\scratch
но ничего ниже этого, New-Item -Type Directory c:\scratch\foo\bar\baz
создаст foo\bar\baz
подкаталоги.
Это позволит вам удалить логику для нажатия и извлечения местоположения, и ваш цикл может просто создавать имена каталогов в строке, многократно добавляя к строке и создавая файлы в каждом каталоге, как и раньше.
Второй небольшой совет - использовать числовые единицы PowerShell. Вместо комментариев, определяющих ваши «магические числа» для случайного размера файла, вы можете вместо этого использовать: (Get-Random -Minimum 1KB -Maximum 20MB)