PowerShell

Материал из rrv-wiki
Перейти к навигации Перейти к поиску

Запуск скрипта

Бывает выдает ошибку:

Не удается загрузить файл C:\test.ps1, так как выполнение скриптов запрещено для данной системы. 
Введите "get-help about_signing" для получения дополнительных сведений.

Лечится выполнением так:

powershell -executionpolicy bypass -File C:\test.ps1

Скрипты

Проблемы резервная копия баз данных

ЕСТЬ ПРОБЛЕМА! НАДО ИСПРАВИТЬ, ДЕЛО В ТОМ ЧТО В POWERSHELL ПО УМОЛЧАНИЮ КОДИРОВКА CP866 а mysql-клиент в винде по умолчанию работает в cp1251, есть для корректной работы скрипта требуется добавить

 --default-character-set=cp866

Но тогда и восстанавливать дамп требуется из powershell с тем же ключом. В общем творческий подход.

Так же возможно требуется поиграться с настройками перекодировки:

  • [Console]::OutputEncoding - отвечает за перекодировку <native application> -> <Powershell>
  • $OutputEncoding - отвечает за перекодировку <Powershell> -> <native application>
  • [Console]::InputEncoding - отвечает за ввод с клавиатуры в консольное приложение)

Резервная копия баз данных (не очень рабочая смотри выше)

Делаем дамп всех клиентских баз данных в отдельные файлы. Делаем общий дамп всех баз в один файл. Архивируем в один файл. mysql_dump.ps1

# Настройки для резервного копирования
$MySQLPath = "C:\Program Files\MariaDB 10.1\bin\"
$Hostname = "127.0.0.1"
$Username = "root"
$Password = "--password=mypassword"
$ShowDB = "show databases;"
$DumpDir = "c:\backup"
$Zip = "C:\Program Files\7-Zip\7z.exe"

# Получаем штамп времени в формате ГГГГММДДЧЧММСС
$timestamp = Get-Date -format yyyyMMddHHmmss

# Создаем временную папку для резервного копирования
& mkdir $DumpDir"\"$timestamp"-mysql"

# Получаем список баз данных
$Databases =(
	& $MySQLPath\mysql.exe -h $Hostname -u $Username $Password -B -N -e $ShowDB
)

# Делаем dump баз данных по отдельным файлам
Foreach ($db in $Databases) {
  # Базы information_schema и performance_schema исключаем, так как они мне не нужны и требуют блокировки таблиц.
  if (($db -ne "information_schema") -and ($db -ne "performance_schema")) {
	echo $db
	& $MySQLPath\mysqldump.exe -h $Hostname -u $Username $Password --add-drop-table --add-drop-database -B $db | Out-File $DumpDir"\"$timestamp"-mysql\"$db".sql"
  }
}

# Делаем общий дамп всех баз (это для удобства, иногда требуется восстановить все разом, вы можете не делать)
& $MySQLPath\mysqldump  -h $Hostname -u $Username $Password --add-drop-table --add-drop-database --all-databases > $DumpDir"\"$timestamp"-mysql\mysql-all-dump.sql"

# Архивируем папку
& $Zip a -y -bd -ssw $DumpDir"\"$timestamp"-mysql.zip" $DumpDir"\"$timestamp"-mysql"

# Удаляем временную папку
del $DumpDir"\"$timestamp"-mysql"