Files
hNetworkSwitchDiscovery/Install-Dependencies.ps1
2026-05-06 10:43:38 +03:00

135 lines
4.6 KiB
PowerShell

#Requires -Version 5.1
Set-StrictMode -Version Latest
function wStep { param([string]$t); Write-Host " [>] $t" -ForegroundColor Yellow }
function wOK { param([string]$t); Write-Host " [+] $t" -ForegroundColor Green }
function wFail { param([string]$t); Write-Host " [-] $t" -ForegroundColor Red }
function wInfo { param([string]$t); Write-Host " [i] $t" -ForegroundColor Gray }
Clear-Host
Write-Host " ================================================" -ForegroundColor Cyan
Write-Host " NetworkSwitchDiscovery - Kurulum Sihirbazi" -ForegroundColor Cyan
Write-Host " ================================================" -ForegroundColor Cyan
Write-Host ""
# 1. PowerShell versiyonu
wStep "PowerShell versiyonu..."
if ($PSVersionTable.PSVersion.Major -lt 5) {
wFail "PowerShell 5.1+ gerekli. Mevcut: $($PSVersionTable.PSVersion)"; exit 1
}
wOK "PowerShell $($PSVersionTable.PSVersion) - Uyumlu"
# 2. ExecutionPolicy
wStep "ExecutionPolicy kontrol..."
$pol = Get-ExecutionPolicy -Scope CurrentUser
if ($pol -in @("Restricted","AllSigned")) {
wInfo "Policy $pol - RemoteSigned olarak degistiriliyor..."
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
wOK "ExecutionPolicy: RemoteSigned"
} else {
wOK "ExecutionPolicy: $pol (uygun)"
}
# 3. Klasor yapisi
wStep "Klasor yapisi..."
$libDir = Join-Path $PSScriptRoot "lib"
if (-not (Test-Path $libDir)) {
New-Item -ItemType Directory -Path $libDir | Out-Null
wOK "lib\ olusturuldu"
} else {
wOK "lib\ mevcut"
}
# 4. NuGet
wStep "NuGet provider..."
$nuget = Get-PackageProvider -Name NuGet -ErrorAction SilentlyContinue
if (-not $nuget -or $nuget.Version -lt [version]"2.8.5.201") {
wInfo "NuGet kuruluyor..."
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Scope CurrentUser -Force | Out-Null
wOK "NuGet kuruldu"
} else {
wOK "NuGet: $($nuget.Version)"
}
# 5. PSGallery
wStep "PSGallery trust..."
$gal = Get-PSRepository -Name PSGallery -ErrorAction SilentlyContinue
if ($gal -and $gal.InstallationPolicy -ne "Trusted") {
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
wOK "PSGallery: Trusted"
} else {
wOK "PSGallery: Trusted (zaten)"
}
# 6. Posh-SSH
wStep "Posh-SSH..."
$posh = Get-Module -ListAvailable -Name Posh-SSH | Select-Object -First 1
if (-not $posh) {
wInfo "Posh-SSH bulunamadi, kuruluyor..."
try {
Install-Module -Name Posh-SSH -Scope CurrentUser -Force -AllowClobber
wOK "Posh-SSH kuruldu"
} catch {
wFail "Posh-SSH kurulamadi: $($_.Exception.Message)"
wInfo "Manuel: Install-Module Posh-SSH -Scope CurrentUser -Force"
}
} else {
wOK "Posh-SSH v$($posh.Version) mevcut"
}
# 7. ThreadJob (PS 5.1 icin)
wStep "ThreadJob (PS 5.1 icin)..."
if ($PSVersionTable.PSVersion.Major -ge 7) {
wOK "PS 7+ - ThreadJob gereksiz, RunspacePool kullaniliyor"
} else {
$tj = Get-Module -ListAvailable -Name ThreadJob | Select-Object -First 1
if (-not $tj) {
wInfo "ThreadJob bulunamadi, kuruluyor..."
try {
Install-Module -Name ThreadJob -Scope CurrentUser -Force
wOK "ThreadJob kuruldu"
} catch {
wInfo "ThreadJob kurulamadi (opsiyonel): $($_.Exception.Message)"
}
} else {
wOK "ThreadJob v$($tj.Version) mevcut"
}
}
# 8. SharpSnmpLib (opsiyonel)
wStep "SharpSnmpLib.dll (opsiyonel)..."
$dll = Join-Path $PSScriptRoot "lib\SharpSnmpLib.dll"
if (Test-Path $dll) {
wOK "SharpSnmpLib.dll mevcut"
} else {
wInfo "SharpSnmpLib.dll yok - yerlesik UDP SNMP (v1/v2c) kullanilacak"
wInfo "v3 icin: https://www.nuget.org/packages/SharpSnmpLib"
wInfo "Indirip lib\ klasorune kopyalayin"
}
# 9. Script dosyalari
wStep "Script dosyalari..."
$ok = $true
foreach ($f in @("Invoke-SwitchDiscovery.ps1","Start-SwitchDiscovery.ps1")) {
$p = Join-Path $PSScriptRoot $f
if (Test-Path $p) { wOK "$f mevcut" }
else { wFail "$f EKSIK!"; $ok = $false }
}
Write-Host ""
Write-Host " ================================================" -ForegroundColor Cyan
if ($ok) {
Write-Host " Kurulum TAMAMLANDI!" -ForegroundColor Green
Write-Host ""
Write-Host " Baslangic:" -ForegroundColor White
Write-Host " .\Start-SwitchDiscovery.ps1" -ForegroundColor Cyan
Write-Host ""
Write-Host " Veya dogrudan:" -ForegroundColor White
Write-Host " .\Invoke-SwitchDiscovery.ps1 -IPRange '192.168.1.0/24' -Username admin" -ForegroundColor Cyan
} else {
Write-Host " UYARI: Bazi dosyalar eksik!" -ForegroundColor Yellow
}
Write-Host " ================================================" -ForegroundColor Cyan
Write-Host ""
Read-Host " Cikmak icin Enter"