✅
PowerShell でクイックアクセスにフォルダをピン留めする
以下のスクリプトを 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
Discussion