Types/Wave/Save.ps1
|
<# .SYNOPSIS Saves waves .DESCRIPTION Saves a Wave File to disk. If no path is provided, will save to the temporary path. #> param([string]$Path) # If no path is provided if (-not $path) { # default to a subpath of local application data $path = [Environment]::GetFolderPath("LocalApplicationData"), 'Wave', # and name the file using it's sha256 hash. "$($this.SHA256).wav" -join '/' } # Get ready to get paths $getUnresolvedPath = # (this line is a mouthful, and so we will separate it) $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath # Loop over all unresolved paths foreach ($unresolvedPath in $getUnresolvedPath.Invoke($path)) { # and create a file if they do not already exist $file = if (-not [IO.File]::Exists($unresolvedPath)) { New-Item -ItemType File -Path $unresolvedPath -Force } else { [IO.FileInfo]$unresolvedPath } # If that failed, continue if (-not $file) { continue } # Write the file bytes [IO.File]::WriteAllBytes($File.FullName, $this.ToArray()) # and output the saved file. [IO.FileInfo]$file.FullName } |