PowerShell でクイックアクセスにフォルダをピン留めする

2021/09/02に公開

以下のスクリプトを Register-QuickAccess.ps1 という名前でパスの通ったディレクトリに保存します。

[CmdletBinding(SupportsShouldProcess = $true, DefaultParameterSetName = 'Path')]
Param (
	[SupportsWildCards()]
	[Parameter(
		Mandatory = $true,
		Position = 0,
		ParameterSetName = 'Path',
		ValueFromPipelineByPropertyName = $true,
		ValueFromPipeline = $true
	)]
	[string[]]$Path,

	[Alias('LP')]
	[Alias('PSPath')]
	[Parameter(
		Mandatory = $true,
		Position = 0,
		ParameterSetName = 'LiteralPath',
		ValueFromPipelineByPropertyName = $true,
		ValueFromPipeline = $false
	)]
	[string[]]$LiteralPath
)
Begin {
	$shell = New-Object -ComObject Shell.Application
}
Process {
	switch ($PSCmdlet.ParameterSetName) {
		'Path' {
			$paths = Convert-Path -Path $Path
		}
		'LiteralPath' {
			$paths = Convert-Path -LiteralPath $LiteralPath
		}
	}
	$paths | Foreach-Object {
		if ($PSCmdlet.ShouldProcess($_)) {
			if ((Get-Item $_).PSIsContainer) {
				$shell.NameSpace($_).Self.InvokeVerb("pintohome")
			}
		}
	}
}

使用法は次の通りです。

Register-QuickAccess フォルダ名

フォルダを右クリックした時に出てくるメニューから「クイックアクセスにピン留め」を選択するのと同じことをしています。
フォルダ以外を右クリックしてもそのメニューは出てこないため、このスクリプトでピン留めできるのはフォルダだけです。

コードの詳細については PowerShell でファイルやフォルダをごみ箱に入れる の解説と大きく重複するので、そちらをご覧ください。

執筆日: 2021/09/02

GitHubで編集を提案

Discussion