casual migrate to powershell
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
param(
|
||||
[string]$action = "reconnect" # connect | disconnect | reconnect
|
||||
)
|
||||
|
||||
Write-Host "Apps Manager запущен с действием: $action"
|
||||
|
||||
# CSV-файл с приложениями
|
||||
$config = $appsAll
|
||||
|
||||
# Импорт CSV
|
||||
$apps = Import-Csv -Path $config
|
||||
|
||||
foreach ($app in $apps) {
|
||||
# Пропускаем отключённые
|
||||
if ($app.Enabled -ne "1") { continue }
|
||||
|
||||
$AppName = $app.App
|
||||
|
||||
# Разворачиваем строки From и To с подстановкой $AppName
|
||||
$rawFrom = $app.From -replace '\$AppName', $AppName
|
||||
$rawTo = $app.To -replace '\$AppName', $AppName
|
||||
|
||||
# Разворачиваем переменные окружения
|
||||
$from = $ExecutionContext.InvokeCommand.ExpandString($rawFrom)
|
||||
$to = $ExecutionContext.InvokeCommand.ExpandString($rawTo)
|
||||
|
||||
# Если путь To относительный, делаем его абсолютным относительно пользователя
|
||||
if (-not [System.IO.Path]::IsPathRooted($to)) {
|
||||
$to = Join-Path $env:USERPROFILE $to
|
||||
}
|
||||
|
||||
Write-Host "=============================="
|
||||
Write-Host "Processing $AppName with action $action (Type=$($app.Type))"
|
||||
Write-Host " Raw From: $rawFrom"
|
||||
Write-Host " Raw To : $rawTo"
|
||||
Write-Host " Expanded From: $from"
|
||||
Write-Host " Expanded To : $to"
|
||||
|
||||
if ($app.Type -ieq "isolate") {
|
||||
Write-Host " [isolate] — пропускаем действия"
|
||||
continue
|
||||
}
|
||||
|
||||
switch ($action.ToLower()) {
|
||||
"disconnect" {
|
||||
Write-Host " Removing $to"
|
||||
if (Test-Path $to) { Remove-Item $to -Recurse -Force }
|
||||
}
|
||||
"connect" {
|
||||
Write-Host " Creating symlink $to -> $from"
|
||||
if (-not (Test-Path $to)) {
|
||||
New-Item -Path $to -ItemType SymbolicLink -Value $from | Out-Null
|
||||
}
|
||||
}
|
||||
"reconnect" {
|
||||
Write-Host " Removing $to"
|
||||
if (Test-Path $to) { Remove-Item $to -Recurse -Force }
|
||||
Write-Host " Creating symlink $to -> $from"
|
||||
if (-not (Test-Path $to)) {
|
||||
New-Item -Path $to -ItemType SymbolicLink -Value $from | Out-Null
|
||||
}
|
||||
}
|
||||
default {
|
||||
Write-Warning "Неизвестное действие: $action"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user