Is there a way to create ACL's from scratch in powershell, as opposed to copying existing ones and modifying them?
You need to use the .NET object:
$emptyACL = New-Object System.Security.AccessControl.DirectorySecurity
Note, I found this by using the Get-Member function to find the TypeName:
$ACL = Get-ACL C:\some_directory
$ACL | Get-Member
TypeName: System.Security.AccessControl.DirectorySecurity
Name MemberType Definition
---- ---------- ----------
.........................................................