Задать вопрос
  • Как сделать отдельную функцию для нажатия клавиш на PowerShell?

    @passstrada Автор вопроса
    покумекал что-то придумал
    создаем функцию:
    function Wait-ForUserInput {
        Write-Host "Press Enter to execute" -ForegroundColor Green
        Write-Host "Or 0 to return" -ForegroundColor Green
        
        $key = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
        
        if ($key.Character -eq "0") {
            Clear-Host
            return  # Возвращение в меню
        } elseif ($key.Character -eq "`r") {
            Start-Sleep -Seconds 1
            Write-Host
            & $script  # Вызов функции
            Read-Host "Press Enter to continue"
            Clear-Host
            return
        }
    }


    а в меню будем писать:

    $script = { DriverB }
    Wait-ForUserInput
    $script = $null

    где просто будем менять функцию DriverB
    Ответ написан
  • Как создать через PowerShell задачу для планировщика задач от системы?

    @passstrada Автор вопроса
    Все гораздо проще чем я себе представлял, оказалось что нужно было создать файл .vbs, отправить в папку с автозагрузкой, как итог вышло у меня что-то такого:

    $filesScriptPath = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup"
    $filePath = "$filesScriptPath\aria2.vbs"
    
    @"
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "aria2c.exe --dir=%USERPROFILE%\Downloads --enable-rpc=true --rpc-allow-origin-all=true --rpc-listen-all=true --rpc-listen-port=6800 --rpc-secret=12345 -D", 0
    Set WshShell = Nothing
    "@ | Set-Content -Path $filePath
    
    Start-Process -FilePath $filePath


    мы создаем файл с конфигурациями, после запускам его, так же он запускается каждый раз при старте системы
    всем спасибо, а то голову ломал
    Ответ написан
  • Как запросить права администратора при выполнение скрипта?

    @passstrada Автор вопроса
    получилось что-то такое:
    if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
        $scriptPath = $MyInvocation.MyCommand.Path
        $arguments = "-NoProfile -ExecutionPolicy Bypass -File `"$scriptPath`""
        Start-Process powershell -ArgumentList $arguments -Verb RunAs
        Exit
    }
    Ответ написан
    Комментировать
  • Как скачать последнюю версию файла через powershell?

    @passstrada Автор вопроса
    извиняюсь за путаницу, не правильное регулярное выражение, у меня все получилось:
    function Get-VersionsFromGitHub {
        $url = "https://github.com/abbodi1406/vcredist/releases"
        $response = Invoke-WebRequest -Uri $url
        $versions = $response.Content | Select-String -Pattern "v\d+\.\d+\.\d+" -AllMatches | ForEach-Object { $_.Matches.Value }
        return $versions
    }
    function Get-MaxVersion {
        param (
            [string[]]$versions
        )
        $maxVer = "v0.00.0"
        foreach ($version in $versions) {
    		if ($version -match "v(\d{1,2})\.(\d{1,2})\.(\d{1,2})") {
    					$currentVer = "v$($matches[1]).$($matches[2]).$($matches[3])"
                if ($currentVer -gt $maxVer) {
                    $maxVer = $currentVer
                }
            }
        }
        return $maxVer
    }
    $versions = Get-VersionsFromGitHub
    $latestVersion = Get-MaxVersion -versions $versions
    Write-Output "Max version product: $latestVersion"
    Invoke-WebRequest -Uri "https://github.com/abbodi1406/vcredist/releases/download/$latestVersion/VisualCppRedist_AIO_x86_x64.exe" -OutFile ".\VisualCppRedist_AIO_x86_x64.exe"
    Start-Process -FilePath ".\VisualCppRedist_AIO_x86_x64.exe" -ArgumentList "/y"  -Wait 
    Remove-Item -Path ".\VisualCppRedist_AIO_x86_x64.exe"
    pause
    exit

    спасибо за внимание
    Ответ написан
  • BAT, Как копировать файлы с папками по полным путям?

    @passstrada Автор вопроса
    Решение:
    Первое:
    xcopy "C:\Data" "C:\papka1" /e /h /k /q /r /c /y
    Второе:
    @echo off
    for /f "delims= eol=" %%f in ('type list.txt') do (
    if exist "%%f\" (
    robocopy "%%~dpf\" "C:\papka2%%~pf\" /xf * /e /njh /njs /v /log+:log.txt
    ) else ( robocopy "%%~dpf\" "C:\papka2%%~pf\" /fp /njh /njs /ns /nc /v /log+:log.txt "%%~nxf" )
    )
    Ответ написан
    Комментировать