Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Test-ShortcutTargetPath
- {
- <#
- .SYNOPSIS
- Проверка ярлыков
- .DESCRIPTION
- Функция для проверки путей в поле Объект в ярлыках
- .PARAMETER Lnks
- System.String[] - Полный путь к ярлыку/массив путей
- .INPUTS
- System.String[] - Полный путь к ярлыку/массив путей
- .OUTPUTS
- [PSCustomObject] - с полями:
- FilePath - Путь к ярлыку
- TargetPath - Путь в поле Объкт ярлыка
- TargetExists - True, если путь из поля Объект найден, иначе False
- IsUNC - True, если путь из поля Объект UNC, иначе False
- .EXAMPLE
- $Directories =
- @(
- "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Windows PowerShell"
- "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools"
- )
- Get-ChildItem -Path $Directories -Recurse -Filter "*.lnk" |
- Test-ShortcutTargetPath |
- Format-List
- ---
- Проверка пути в поле Объект, у ярлыков находящихся в папках, в меню Пуск:
- Windows PowerShell и System Tools
- .NOTES
- Автор: iNNOKENTIY21
- #>
- param
- (
- [Parameter(Mandatory,
- ValueFromPipeline,
- ValueFromPipelineByPropertyName)]
- [ValidateNotNullOrEmpty()]
- [string[]]
- [Alias("FullName")]
- $Lnks
- )
- begin {$WSH = New-Object -ComObject WScript.Shell}
- process
- {
- foreach ($Lnk in $Lnks)
- {
- if (-not (Test-Path -Path $Lnk))
- {
- "$Lnk не найден."
- continue
- }
- $Shortcut = $WSH.CreateShortcut($Lnk)
- $TargetExists = ($Shortcut.TargetPath -ne "" -and
- (Test-Path $Shortcut.TargetPath))
- $IsUNC = $Shortcut.TargetPath.StartsWith("\\")
- [PSCustomObject]@{
- FilePath = $Lnk
- TargetPath = $Shortcut.TargetPath
- TargetExists = $TargetExists
- IsUNC = $IsUNC
- }
- }
- }
- }
- #Пример:
- $Directories =
- @(
- "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Windows PowerShell"
- "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools"
- )
- Get-ChildItem -Path $Directories -Recurse -Filter "*.lnk" |
- Test-ShortcutTargetPath |
- Format-List
- #Пример:
- "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools\Administrative Tools.lnk" |
- Test-ShortcutTargetPath |
- Format-List
- #Пример:
- Test-ShortcutTargetPath "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools\Administrative Tools.lnk" |
- Format-List
Advertisement
Add Comment
Please, Sign In to add comment