Пример функции для пакетной проверки множества ярлыков *.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 |
Автор первичной редакции:
Алексей Максимов
Время публикации: 04.04.2023 19:23