Powershell в C# Windows Form

Михаил11 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
02.04.2024

Необходимо перекинуть рабочий код c powershell в c# WF, сделать мини ПО по нажатию на кнопку которое будет выполнять всё что делает ps.

try {
    # Получаем текущую дату в формате "dd.MM.yyyy"
    $todayDate = Get-Date -Format "dd.MM.yyyy"
    # Указываем путь к целевой папке
    $targetFolderPath = "C:\Users\11\Desktop\123"

    # Проверка наличия указанной папки
    if (!(Test-Path $targetFolderPath)) {
        Write-Host "Указанная папка не существует."
        pause
    }

    # Получаем список файлов с нужными именами в указанной папке и её подпапках
    $files = Get-ChildItem -Path $targetFolderPath -Recurse | Where-Object { $_.Name -eq "ReadMe.txt" -or $_.Name -eq "VerInfo.txt" -or $_.Name -eq "Install.txt" -or $_.Name -eq "UpdInfo.txt" }

    # Проверка наличия файлов для обновления
    if ($files.Count -eq 0) {
        Write-Host "В указанной папке нет файлов с заданными именами для обновления."
        pause
    }

    # Указываем старую и новую версии для замены
    $OldVersion = "3.0.32"
    $OldVersion2 = "3_0_32"
    $NewVersion = "3.0.33"
    $NewVersion2 = "3_0_33"

    # Папки, которые не нужно обрабатывать
    $excludedFolders = @("Sources", "Protection", "ExtFiles", "КеуDB")

    foreach ($file in $files) {
        # Проверяем, находится ли файл в исключенных папках
        $exclude = $false
        foreach ($folder in $excludedFolders) {
            if ($file.FullName -like "*\$folder\*") {
                $exclude = $true
                break
            }
        }

        # Если файл находится в исключенной папке, пропускаем его
        if ($exclude) {
            continue
        }

        try {
            # Получаем содержимое файла
            $fileContent = Get-Content -Path $file.FullName -Raw -ErrorAction Stop

            # Обновляем дату
            $updatedContent = $fileContent -replace 'UpdateDate=\d{2}\.\d{2}\.\d{4}', "UpdateDate=$todayDate"
            # Заменяем старые версии на новые
            $updatedContent = $updatedContent -replace [regex]::Escape($OldVersion), $NewVersion
            $updatedContent = $updatedContent -replace [regex]::Escape($OldVersion2), $NewVersion2
            # Дополнительная замена для "FromVersions=;X.X.XX.1;" на "FromVersions=;$OldVersion.1;"
            $updatedContent = $updatedContent -replace 'FromVersions=;(\d{1,}\.\d{1,}\.\d{1,}\.\d{1,});', "FromVersions=;$OldVersion.1;"

            # Если содержимое файла было изменено, записываем обновленное содержимое обратно в файл
            if ($fileContent -ne $updatedContent) {
                $updatedContent | Set-Content -Path $file.FullName -ErrorAction Stop
                Write-Host "Файл $($file.FullName) успешно обновлен"
            }
            else {
                Write-Host "Файл $($file.FullName) не требует обновления."
            }
        } catch {
            Write-Host "Произошла ошибка при обработке файла $($file.FullName): $_"
        }
    }

    Write-Host "Операция выполнена успешно"
} catch {
    Write-Host "Произошла ошибка: $_"
}

# Пауза для удержания окна консоли после выполнения скрипта
pause

Заявки фрилансеров