PowerShell 5 introduces the New-TemporaryFile cmdlet, which is handy.  How can I do the same thing but instead of a file create a directory?  Is there a New-TemporaryDirectory cmdlet?
Within PowerShell there is a built in Cmdlet called New-TemporaryFile . Running this cmdlet simply creates a random 0 byte file in the $ENV:Temp folder in whichever platform you are working in. However, we can borrow the filename created and use it to create a folder instead.
Use mktemp -d . It creates a temporary directory with a random name and makes sure that file doesn't already exist. You need to remember to delete the directory after using it though.
How can I use Windows PowerShell to find the path to the temporary folder? Use the Temp variable, and obtain its value from the Env: PS drive.
To create a folder in PowerShell, use the New-Item cmdlet indicating the location and name of the folder and set the itemType parameter with the value Directory to indicate that you want to create a folder.
I think it can be done without looping by using a GUID for the directory name:
function New-TemporaryDirectory {     $parent = [System.IO.Path]::GetTempPath()     [string] $name = [System.Guid]::NewGuid()     New-Item -ItemType Directory -Path (Join-Path $parent $name) }   Here's my port of this C# solution:
function New-TemporaryDirectory {     $parent = [System.IO.Path]::GetTempPath()     $name = [System.IO.Path]::GetRandomFileName()     New-Item -ItemType Directory -Path (Join-Path $parent $name) }   How likely is it that GetRandomFileName will return a name that already exists in the temp folder?
XXXXXXXX.XXX where X can be either a lowercase letter or digit.GetRandomFileName NewGuid on the other hand can be one of 2^122 possibilities, making collisions all but impossible.
I also love one-liners, and I'm begging for a downvote here. All I ask is that you put my own vague negative feelings about this into words.
New-TemporaryFile | %{ rm $_; mkdir $_ }   Depending on the type of purist you are, you can do %{ mkdir $_-d },  leaving placeholder to avoid collisions.
And it's reasonable to stand on Join-Path $env:TEMP $(New-Guid) | %{ mkdir $_ } also.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With