🐴
PowerShell:よくつかうやつ3選
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