-
Notifications
You must be signed in to change notification settings - Fork 0
/
Set-DirectoryX-Child-Both.ps1
78 lines (67 loc) · 2.27 KB
/
Set-DirectoryX-Child-Both.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<#
.SYNOPSIS
Change to child directory in console and File Explorer.
.DESCRIPTION
Change to child directory in console and File Explorer.
.PARAMETER Path
Substring to match a directory.
.PARAMETER All
Search all drives (default is current drive only).
.INPUTS
Directory substring, search all drives.
.OUTPUTS
None.
.EXAMPLE
PS> .\Set-DirectoryX-Child-Both.ps1 "temp" -All
#>
using module Varan.PowerShell.Validation
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#Requires -Version 5.0
#Requires -Modules Varan.PowerShell.Validation
[CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Low')]
param (
[parameter(Position = 0)] [string]$Path,
[parameter(Position = 1)] [switch]$All
)
DynamicParam { Build-BaseParameters }
Begin
{
Write-LogTrace "Execute: $(Get-RootScriptName)"
$minParams = Get-MinimumRequiredParameterCount -CommandInfo (Get-Command $MyInvocation.MyCommand.Name)
$cmd = @{}
if(Get-BaseParamHelpFull) { $cmd.HelpFull = $true }
if((Get-BaseParamHelpDetail) -Or ($PSBoundParameters.Count -lt $minParams)) { $cmd.HelpDetail = $true }
if(Get-BaseParamHelpSynopsis) { $cmd.HelpSynopsis = $true }
if($cmd.Count -gt 1) { Write-DisplayHelp -Name "$(Get-RootScriptPath)" -HelpDetail }
if($cmd.Count -eq 1) { Write-DisplayHelp -Name "$(Get-RootScriptPath)" @cmd }
}
Process
{
try
{
$isDebug = Assert-Debug
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
$includeFile = Join-Path $scriptPath "Directory-Search-Functions.ps1"
. $includeFile
$directory = Find-Directory -SearchPath $Path -ChildSearch -SearchAllDrives:$All
if ($directory)
{
if ($PSCmdlet.ShouldProcess($directory, 'Set location.'))
{
Set-Location $directory
Start-Process "explorer.exe" -ArgumentList $directory
}
} else {
Write-Host "No matching directory found for '$Path'."
}
}
catch [System.Exception]
{
Write-DisplayError $PSItem.ToString() -Exit
}
}
End
{
Write-DisplayHost "Done." -Style Done
}
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------