🐴

PowerShell:よくつかうやつ3選

2021/01/08に公開

1.ディレクトリ内のファイル名を一覧にしてCSVへ出力する

Get-ChildItem "[ファイルパス]" -Recurse -Force | Where-Object {-not $_.PsIsContainer} | Select-Object Directory, Name, Length, LastWriteTime | Export-Csv "出力ファイル名.csv" -encoding Default

2.テキストファイルの内部を参照し、特定タグに挟まれた文字列を正規表現で検索して置換する

 #置換したい文字列を変数に格納する
$a= "<record_path>"
$b="¥¥192.168.XXX.XX¥hogehoge¥barusu¥tensai¥"
$c= "`$(YYYY)¥`$(YYYY)_`$(MM)¥`$(YYYY)_`$(MM)_`$(DD)¥`$(ACCOUNTNAME)_`$(CALLERIDNUMBER)_`$(YYYY)-`$(MM)-`$(DD)_`$(HH):`$(NN):`$(SS).WAV"
$d= "</record_path>"

<# ↑の補足事項
 $は[””]で囲っていても変数として認識されてしまうので、[`]をつけてエスケープする
 <変数をa,b,c,dに分けている理由>
  1.視認性を上げるため
  2.変更しやすくするため
  3.実際の作業時、分けないとエラーが出たため
   いらなければ変数一つに格納でいいです(小声) #>

 #変数を結合する
$path= $a+$b+$c+$d

 #=====ここから処理開始=====

 #処理するディレクトリへ移動
cd $env:appdata\hogehoge

 #配下のファイルを読み込む
$data= Get-Content .\foobar.txt

 #行番号を指定して置換する文字列を検索
 #[.]と[*]は正規表現

$data[5-1]=$data[5-1] -replace "<record_path>.*</record_path>",$path

 #処理結果をテキストファイルにして出力する
$data | Out-file .\test.txt -Encoding UTF8

3.PowerShellでGmailを使ってメール送信

# Send Gmail Script
# 宛先は引数で指定 / 件名・本文はテキストを読み込む
 
# アカウント情報をセット
$AccountName = "xxxx@gmail.com"
$Password = "hogehoge"
 
# Gmail認証
$SMTPClient = New-Object Net.Mail.SmtpClient("smtp.gmail.com", 587)
$SMTPClient.EnableSsl = $True
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("$AccountName","$Password");
 
# 各情報
$From = "$AccountName"
$To   = $Args[0]
$Subject  = Get-Content .\Subject.txt
$Body     = Get-Content .\body.txt -Raw

# メール組み立て
$Message = New-Object Net.Mail.MailMessage($From, $To, $Subject, $Body)
 
# メール送信
$SMTPClient.Send($Message)

Discussion