Ilk Commit
This commit is contained in:
134
Install-Dependencies.ps1
Normal file
134
Install-Dependencies.ps1
Normal file
@@ -0,0 +1,134 @@
|
||||
#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"
|
||||
Reference in New Issue
Block a user