пятница, 2 апреля 2010 г.

I've got the Power...Shell

При тестировании своих проектов, мне зачастую надо выполнять набор каких-либо определённых действий. Чаще всего, действия эти простые, но требуют затрат некоторого количества времени.
Мне это дело изрядно надоело, поэтому я твёрдо решил автоматизировать эти действия.
На помощь пришёл PowerShell, а также разработчики, которые оказали содействие. Суть автоматизации - написать функцию, прописать её в профиле PowerShell на локальной и удалённой машинах и выполнять её, когда необходимо выполнять вышеупомянутые рутинные действия.
А дело происходит так:
Открываем PowerShell и cоздаём профиль(ну, если ещё не создан конечно): new-item -type file -path $profile -force
Открываем профиль: notepad $profile
Пишем функцию:
function DoSomething([string]$Param1 = "") {
if ($Param1 -eq "") {
Write-Host "You are an IDIOT!!!! You need to enter Param1 value!" -ForegroundColor Red
return
}
$A_OUTPUT = "D:\Destination\"
$B_INPUT = "D:\Files\Images\"
$C_FILE = "Info.txt"

$currentDate = Get-Date -Format yyyyMMdd
$destinationFolder = $A_OUTPUT + $currentDate

if ((Test-Path -path $destinationFolder) -ne $True)
{
New-Item $destinationFolder -type directory | Out-Null
}

$Destination = "$destinationFolder\$Param1"

if ((Test-Path -path $Destination) -ne $True)
{
New-Item $Destination -type directory | Out-Null
}

$files = ls $B_INPUT

$files | %{copy -path $_.FullName -Destination $Destination}
Write-Host "$($files.Count) files" -ForegroundColor Yellow -noNewLine
Write-Host " copied from $B_INPUT to $Destination"

New-Item ($Destination + "\" + $C_FILE) -itemType File -Force | Out-Null
Write-Host "$C_FILE" -ForegroundColor Yellow -noNewLine
Write-Host " is created"
Write-Host "Files $Param1 are reorganizes!" -ForegroundColor Green
}
Сохраняем профиль. Тут есть вопрос безопасности - если вам операционка говорит "низя" - её надо вежливо попросить:
1. Запустить PowerShell под админом
2. Прописать следующее: Set-ExecutionPolicy unrestricted
3. Согласиться на все, что предложит :)
Перезапускаем PowerShell.
Запускаем функцию DoSomething TestB13. И функция благополучно копирует файлы из D:\Files\Images\ в D:\Destination\\TestB13 и создаёт текстовый файл Info.txt для последующего ввода описания.
Ответ PowerShell'a будет такой (с учётом, что в ресурсе лежит 3 файла):
3 files
copied from D:\Files\Images to D:\Destination\\TestB13
Info.txt
is created
Files TestB13 are reorganized!

В итоге, экономия рабочего времени составила более 50% (точно не замерял), которое я могу тратить на более важные аспекты тестирования.

P.S. Курс молодого бойца PowerShell можно пройти тут

Комментариев нет:

Отправить комментарий