Windows PowerShell(とExcel操作)のテンプレ
目次
本記事の概要
PowerShellのコードのテンプレをまとめました.ExcelのマクロをPowerShellで作りたい人用...
実行環境
・Windows10
・PowerShell5.1
2.PowerShellを動かす
標準入出力
PowerShellの標準入(出)力を利用するには,Read-Host(Write-Output)キーワードを用いる.以下は,コマンドライン上から誕生年,月,日を受け取り出力するプログラムである.
helloPS.ps1
#@reference https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/read-host?view=powershell-6
#実行コマンド
#powershell -ExecutionPolicy RemoteSigned -File .\section1\helloPS.ps1
$birthyear = Read-Host "あなたは何年生まれですか \('o')"
#型を指定する(文字を入力するとエラーになる)
[int] $birthMonth = Read-Host "ちなみに誕生月は(1~12)?"
[int] $birthDay = Read-Host "ちなみに,誕生日は?(1~31)"
Write-Output $birthyear"年生まれ"$birthMonth"月"$birthDay"生まれってことですかね..."
データ型
typesPS.ps1
#データ型
#文字列
Write-Host "String----------------------------------------------"
[string]$str1 = "I am"
[string]$str2 = " a boy!"
Write-Host $str1$str2
#boolean
Write-Host "Boolean----------------------------------------------"
[bool]$flg1 = $true
[bool]$flg2 = $false
$and = $flg1 -and $flg2
$or = $flg1 -or $flg2
Write-Host "The answe of flg1 AND flg2:"$and " The answer of flg1 OR flg2:"$or
#配列@reference https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_arrays?view=powershell-6
Write-Host "Array----------------------------------------------"
$array = @(1,2,4,8)
Write-Host "The first element of array:"$array[0]
Write-Host "The length of array:"$array.Length
#add element
$array += 16
Write-Host "array :"$array
#連想配列
$array2 = @{key1 = "first";key2 = "second";key3 = "last"}
$array2["key3"]
3.PowerShellの基本文法
PowerShellの基本文法のうち,条件分岐,繰り返し,関数を利用したプログラム.
条件分岐
branchLogicPS.ps1
#条件分岐
$input = Read-Host "Please ,enter some integer"
if ($input -eq 7){
"Lucky seven"
} elseif ($input -eq 2) {
#else if(else) は省略可
"The smallest prime number"
} else {
"Bye!"
}
繰り返し
loopPS.ps1
#loop文
#1~100までの連続した整数の和
#while文
$var = 1
$ans = 0
while ($var -lt 100) {
$ans += $var
$var += 1
}
Write-Host "The sum of integers from 1 to 99:"$ans
#for文
$var = 0
$ans = 0
for ($i = 0; $i -lt 100; $i++) {
$ans += $i
}
Write-Host "The sum of integers from 1 to 99:"$ans
#foreach文
$message = ""
$array = @("Hop", "Step", "Jump")
foreach($element in $array){
$message += $element+"!"
}
Write-Host $message
関数
関数を利用したプログラム.関数の内容を定義するときに,引数の組が配列$argsに格納される.
myFuncPS.ps1
#関数
#消費税率を判定
function getSalesTax {
$selesTax = 0
#引数は,配列$argsに格納される
if ($args[0] -lt 1989) {
} elseif ($args[0] -lt 1997) {
$selesTax = 0.03
} elseif ($args[0] -lt 2014) {
$selesTax = 0.05
} else {
$selesTax = 0.08
}
return $selesTax
}
$year = Read-Host "Enter year (1900~2018)"
$salesTax = getSalesTax $year
Write-Host $year" Sales tax:"$salesTax
4.Excelワークブックを編集する
PowerShellでExcelワークブックを編集するプログラム.試しに,A列に日付を連続で入力してみた.