import depuis ancien GitHub
This commit is contained in:
67
check-missing-package-files/CheckMissingFilesForPackages.ps1
Normal file
67
check-missing-package-files/CheckMissingFilesForPackages.ps1
Normal file
@@ -0,0 +1,67 @@
|
||||
|
||||
#-------------------------- connecteur SQL ----------------------------------
|
||||
$dataSource = "sql.leblogosd.lan"
|
||||
$user = "compteSQL"
|
||||
$PassSQL = 'Password'
|
||||
$database = "EPM2021"
|
||||
$connectionString = "Server=$dataSource;uid=$user; pwd=$PassSQL;Database=$database;Integrated Security=False;"
|
||||
$connection = New-Object System.Data.SqlClient.SqlConnection
|
||||
$connection.ConnectionString = $connectionString
|
||||
$connection.Open()
|
||||
|
||||
|
||||
#------------------------ Query -----------------------------------------------------
|
||||
|
||||
$query = "SELECT * FROM [dbo].[PACKAGE]"
|
||||
$command = $connection.CreateCommand()
|
||||
$command.CommandText = $query
|
||||
$result = $command.ExecuteReader()
|
||||
$Packages = new-object System.Data.DataTable
|
||||
$Packages.Load($result)
|
||||
|
||||
$query = "SELECT * FROM [dbo].[PACKAGE_FILES_HASH]"
|
||||
$command = $connection.CreateCommand()
|
||||
$command.CommandText = $query
|
||||
$result = $command.ExecuteReader()
|
||||
$FilesHash = new-object System.Data.DataTable
|
||||
$FilesHash.Load($result)
|
||||
|
||||
|
||||
$PackageError = 0
|
||||
|
||||
foreach ($Package in $Packages) {
|
||||
$PackageName = $Package.NAME
|
||||
$PackageInstall = $Package.INSTALL
|
||||
$PackageFileHashIDN = $Package.PACKAGE_FILES_HASH_IDN
|
||||
|
||||
foreach ($FileHash in $FilesHash) {
|
||||
$FileHashIDN = $FileHash.PACKAGE_FILES_HASH_IDN
|
||||
$FileHashPath = $FileHash.FULL_PATH
|
||||
|
||||
if ($PackageFileHashIDN -eq $FileHashIDN) {
|
||||
If ($FileHashPath -like "http*") {
|
||||
try {
|
||||
$Request = Invoke-WebRequest -uri $FileHashPath
|
||||
} Catch {
|
||||
$PackageError = $PackageError+1
|
||||
If ($PackageInstall -eq 1) { #Package reelle <> bundle
|
||||
write-host "MISSING : $PackageName => $FileHashPath"
|
||||
}
|
||||
}
|
||||
|
||||
If ($FileHashPath -like "\\*") {
|
||||
If (Test-path $FileHashPath) {
|
||||
} Else {
|
||||
$PackageError = $PackageError+1
|
||||
write-host "MISSING : $PackageName => $FileHashPath"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
28
check-missing-package-files/readme.md
Normal file
28
check-missing-package-files/readme.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Check EPM Package Files — README
|
||||
|
||||
Validate that **Ivanti EPM** package file references exist (HTTP/HTTPS and UNC).
|
||||
The script connects to SQL, reads `[dbo].[PACKAGE]` and `[dbo].[PACKAGE_FILES_HASH]`, and reports missing files.
|
||||
|
||||
## Requirements
|
||||
- Windows PowerShell 5.1
|
||||
- Network access to SQL (`EPM2021` DB in the sample)
|
||||
- SQL account with read access to `dbo.PACKAGE` and `dbo.PACKAGE_FILES_HASH`
|
||||
|
||||
## Configure
|
||||
Edit these variables at the top of the script:
|
||||
```powershell
|
||||
$dataSource = "sql.leblogosd.lan" # SQL Server / instance
|
||||
$user = "compteSQL" # SQL login
|
||||
$PassSQL = "Password" # SQL password (plaintext in sample)
|
||||
$database = "EPM2021" # EPM database
|
||||
```
|
||||
## What it does
|
||||
- SELECT * FROM dbo.PACKAGE and SELECT * FROM dbo.PACKAGE_FILES_HASH
|
||||
- For each package/file hash:<br>
|
||||
-- If FULL_PATH starts with http → Invoke-WebRequest (200 = OK, else MISSING)<br>
|
||||
-- If FULL_PATH starts with \\ → Test-Path on UNC (exists = OK, else MISSING)<br>
|
||||
|
||||
## What it does
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Check-EpmPackageFiles.ps1
|
||||
```
|
||||
Reference in New Issue
Block a user