===== PowerShell - Проверка ярлыков *.lnk на предмет поломанных ссылок =====
Пример функции для пакетной проверки множества ярлыков *.lnk на предмет поломанных ссылок:
Function Check-Shortcut{
[CmdletBinding()]
Param(
[Parameter(
Mandatory=$True,
HelpMessage="Please enter Path of Shortcut, Example c:\folder",
Position=1
)][string]$path
)
$ErrorActionPreference='Silentlycontinue'
$Shortcuts = Get-ChildItem -Recurse $path -Include *.lnk -Force
$Shell = New-Object -ComObject WScript.Shell
Foreach ($Shortcut in $Shortcuts)
{
$checks=$shell.CreateShortcut($Shortcut).TargetPath
Foreach($check in $checks){
$pathcheck=Test-Path $($check)
if($pathcheck -eq $false){
[Pscustomobject]@{
Status ='Failed'
Shortcut =$Shortcut.name
FailedTopath =$($check)
}
}
elseif($pathcheck -eq $True){
[Pscustomobject]@{
Status ='Sucess'
Shortcut =$Shortcut.name
Workingpath =$($check)
}
}
}
}
}
Пример вызова функции:
Check-Shortcut -path "\\Server\Share\SHORTCUTS" | where{$_.status -eq 'Failed'}
----
Проверено на следующих конфигурациях:
^ Версия ОС ^ Версия PowerShell ^
| Windows Server 2022 Standard 10.0.20348 | 5.1.20348.1366 |
----
{{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 04.04.2023 19:23
{{tag>PowerShell "File Server" "Windows Server 2022" "Shortcut"}}
~~DISCUSSION~~