how about:
dir $dirName | select -first ((dir $dirName).Length -1) | del
deletes all but the last one.
Edit: A more flexible version, plus you won't have to enter the dir command twice:
$include=$False; dir $dirNam | where {$include; $include=$True;} | del
Note, this does the opposite, it deletes all but the first. It also allows you to add clauses, such as to not act on directories:
$include=$False; dir $dirNam | where {$include -and $_.GetType() -ne [System.IO.DirectoryInfo]; $include=$True;} | del
Edit 2 with regards to excluding directories using the Mode property. I guess that should work provided that the framework does not change the way the mode string is generated (I can't imagine it will). Though I might tighten up the regular expression to:
$_.Mode -notmatch "^d.{4}"
If you are trying to avoid typing, adding a function to your profile is your best bet:
function isNotDir($file) { return $file.GetType() -ne [System.IO.DirectoryInfo];}
dir $dirName | where {isNotDir($_)}