PowerShell Скрипты

Дождаться установки Python

Пример скрипта PowerShell, который использует кастомную функцию для проверки завершения установки Python.

Может пригодиться, если установка запущена другим скриптом а вам нужно дождаться завершения прежде чем делать новые действия.

function Is-Py-Installed { Write-Output "Is-Py-Installed is running" $installed = Get-Command python -ErrorAction SilentlyContinue if ($installed) { $version = python --version 2>&1 Write-Host "Python version: $version" -f Green return 1 } else { Write-Host "Python is not yet installed on this device." -f Yellow return 0 } } $py_installed = 0 while ($py_installed -eq 0) { Write-Output "while loop is running" $py_installed = Is-Py-Installed Start-Sleep -Seconds 3.0 }

Скачать Thrift

PowerShell скрипт для скачивания thrift.exe

$THRIFT_URL = "https://dlcdn.apache.org/thrift/0.19.0/thrift-0.19.0.exe" $FilePath = ".\thrift.exe" If (Test-Path -path $FilePath -PathType Leaf) { Write-Host "thrift.exe file exists" -f Green } Else { Write-Host "thrift.exe file does not exist - starting download" -f Yellow Invoke-WebRequest $THRIFT_URL -OutFile thrift.exe }

Скачать Tesseract

Скачать:

$TESSERACT_URL = "https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v5.3.0.20221214.exe" $FilePath = ".\tesseract.exe" If (Test-Path -path $FilePath -PathType Leaf) { Write-Host "tesseract.exe file exists" -f Green } Else { Write-Host "tesseract.exe file does not exist - starting download" -f Yellow Invoke-WebRequest $TESSERACT_URL -OutFile tesseract.exe }

PowerShell скрипт, который проверяет в какую из двух типичных директорий установлен Tesseract и добавляет в PATH именно её:

$PF_PATH = "C:\Program Files\Tesseract-OCR" $CURRENT_USER = $Env:Username $APP_PATH = 'C:\Users\' + $CURRENT_USER + '\AppData\Local\Programs\Tesseract-OCR;' if (Test-Path -path $APP_PATH) { Write-Host "$APP_PATH dir exists - adding to path" -f Green $Env:Path = $APP_PATH + $Env:Path } elseif (Test-Path -path $PF_PATH) { # Write-Host "$APP_PATH dir does not exists " -f Yellow Write-Host "$PF_PATH dir exists - adding to path" -f Green $Env:Path += ';C:\Program Files\Tesseract-OCR' } else { Write-Host "No Tesseract-OCR dir found in typical locations" -f Red }

В PowerShell 2 ещё нет Invoke-WebRequest, поэтому скрипт для скачивания будет выглядить так:

$TESSERACT_URL = "https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v5.3.0.20221214.exe" $FilePath = ".\tesseract.exe" if (Test-Path -Path $FilePath -PathType Leaf) { Write-Host "tesseract.exe file exists" -ForegroundColor Green } else { Write-Host "tesseract.exe file does not exist - starting download" -ForegroundColor Yellow $wc = New-Object System.Net.WebClient $wc.DownloadFile($TESSERACT_URL, $FilePath) }

Скачать Java

Скачать:

$JAVA_URL = "https://download.oracle.com/java/25/latest/jdk-25_windows-x64_bin.exe" $FilePath = ".\java.exe" If (Test-Path -path $FilePath -PathType Leaf) { Write-Host "java.exe file exists" -f Green } Else { Write-Host "java.exe file does not exist - starting download" -f Yellow Invoke-WebRequest $JAVA_URL -OutFile java.exe }

Импортировать один скрипт в другой

Получить путь до директории, в которой находится исполняемый скрипт

Write-Output $PSScriptRoot

Импортировать другой скрипт указав путь относительно текущего скрипта

. "$PSScriptRoot\settings.ps1"

В PowerShell 2.0 $PSScriptRoot не сработает, поэтому нужно использовать следующую альтернативу с применением Split-Path и Join-Path

$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path $settingsPath = Join-Path $scriptPath "..\..\_settings.ps1" . $settingsPath

Автор статьи: Андрей Олегович