yum -y install wget
2018年2月9日金曜日
2018年2月7日水曜日
Windows7大量展開メモ
WIMイメージ適用手順
1. 新規セットアップ用PCを準備し、標準イメージが格納されている外付けHDDを接続
2. PCの電源を投入し、WinPEメディアを挿入
3. 「DVD(もしくはCD)よりブートする」メニューが表示されたら、「Enter」キーをクリック
4. WinPE起動画面が表示されるので、しばらく待つ
5. WinPEから以下コマンドで外付けHDDのドライブレターを確認
> Diskpart
> List volume
6. 確認したドライブレターをメモし、「exit」で「Dsskpart」を抜ける
7. WinPEより以下コマンドでPCのHDDを初期化
> Diskpart /s <外付けHDDのドライブレター>:\DP.txt
例:外付けHDDのドライブレターが「F」の場合、「Diskpart /s F:\DP.txt」
※上記コマンドを実施すると、PCの内蔵HDDのデータが全部消える
8. WinPEより以下コマンドでイメージの適用を開始
> Imagex /apply /verify <保存先パス>\<適用イメージ名>.wim <イメージ番号> <適用先レータ番号>:
例:「Imagex /apply /verify F:\Windows7x86.wim 1 D:」
9. イメージの適用が始まるので、10~30分程待つ。
※PCスペック、イメージ容量などにより適用時間が異なる。
10. 以下の文字が表示され、正常にイメージが適用出来たことを確認する。
Progress:100%
Successfully applied image.
> x:\windows\system32
11. 以下コマンドでシステムブートドライブを明示的に指定
> D:\Windows\System32\bcdboot.exe D:\Windows
※CはTPM用なので
12. 以下コマンドでPCをシャットダウン
> wpeutil shutdown
13. PCの電源を投入しイメージが適用されたことを確認
※DP.txtの例
select disk 0
clean
create partition primary size=100
select partition 1
format label ="システム予約済み" quick
assign letter C
active
create partition primary
select partition 2
format quick
assign letter D
list volume
※DP.txtの例
select disk 0
clean
create partition primary size=100
select partition 1
format label ="システム予約済み" quick
assign letter C
active
create partition primary
select partition 2
format quick
assign letter D
list volume
2018年2月6日火曜日
Windowsタスクスケジューラの実行結果監視スクリプト
タスクスケジューラの実行結果をPowershellで監視しているので、メモ代わりに残す。
◆PSファイルの中身
# ローカルマシン上有効なタスクを取得し、指定ファイルに書き込む
$OutPut = "C:\BatFolder\TaskResultchecker\tasklist.csv"
$OutPut2 = "C:\BatFolder\TaskResultchecker\temp.txt"
Function gettasks()
{
"HOST,TASKNAME,RUNTIME,RESULT" | Out-File $output -encoding default
$Tasks = schtasks.exe /query /V /FO CSV | ConvertFrom-Csv | Where { $_."ユーザーとして実行" -Like "(特定アカウントでの実行されるタスクをフィルタ)" }
ForEach ($Task in $Tasks) {
If ($Task."実行するタスク" -match "TaskResultchecker"){
#自分のタスクは除く
continue
}
$HostName = $Task."ホスト名"
$BeforeRunTime = $Task."前回の実行時刻"
$TaskName = $Task."タスク名".SubString(1)
$BeforeResult = $Task."前回の結果"
"$HostName,$TaskName,$BeforeRunTime,$BeforeResult" | Out-File $OutPut -append -encoding default
}
}
# -----------------------------
# 実行結果、戻り値1以上の場合メール送信
# -----------------------------
$now = Get-Date -F F
#システムよりデータ抽出処理
gettasks
$task1 = ""
$task1 = Get-Content $OutPut | ConvertFrom-CSV | where {$_.RESULT -gt 0}
if($task1 -ne $null){
$task2 = Get-Content $OutPut | ConvertFrom-CSV | where {$_.RESULT -gt 0} > $OutPut2
# メール送信処理開始
$subject = "タスク実行異常"
$body = "確認時刻 --" + $now
$body = $body + [String]::Join("`r`n",(Get-Content $OutPut2))
# メール情報。宛先は;で複数指定可能
$smtp = "(smtpサーバIPアドレス Or ホスト名)" #SMTPサーバ(必須項目)
$from = "(送信元アドレス)" #送信元(必須項目)
# New-Opjectコマンドレットで.NETクラスをインスタンス化。
$mail = New-Object Net.Mail.MailMessage
$mail.From = $from
$mail.ReplyTo = $replyTo
$mail.Subject = $subject
$mail.Body = $body
# エンコーディング。System.Text.Encodingの静的メンバにアクセスするため::を用いている。
$mail.SubjectEncoding = [Text.Encoding]::GetEncoding("csISO2022JP")
$mail.BodyEncoding = [Text.Encoding]::GetEncoding("csISO2022JP")
# To設定。複数設定可能。
#$mail.To.Add("宛先")
$mail.To.Add("宛先メールアドレス")
#CC設定(必要があれば)
# $mail.CC.Add("CC")
# ReplyTo設定。設定なしも可。
#if($replyTo -ne ""){ $mail.ReplyTo = $replyTo }
# 添付ファイル
$temp = New-Object Net.Mail.Attachment($OutPut)
$mail.Attachments.Add($temp);
# New-Opjectコマンドレットで.NETクラスをインスタンス化。
$sc = New-Object Net.Mail.SmtpClient($smtp)
# 送信。
$sc.Send($mail)
$mail.Dispose()
Remove-Item $OutPut2
}
#if($task1 -eq $null)
# {
# exit
# }
#else
# {
# }
◆PSファイルをキックするためのBATファイル
powershell.exe -executionPolicy RemoteSigned -F C:\BatFolder\TaskResultchecker\schmoniter.ps1
◆PSファイルの中身
# ローカルマシン上有効なタスクを取得し、指定ファイルに書き込む
$OutPut = "C:\BatFolder\TaskResultchecker\tasklist.csv"
$OutPut2 = "C:\BatFolder\TaskResultchecker\temp.txt"
Function gettasks()
{
"HOST,TASKNAME,RUNTIME,RESULT" | Out-File $output -encoding default
$Tasks = schtasks.exe /query /V /FO CSV | ConvertFrom-Csv | Where { $_."ユーザーとして実行" -Like "(特定アカウントでの実行されるタスクをフィルタ)" }
ForEach ($Task in $Tasks) {
If ($Task."実行するタスク" -match "TaskResultchecker"){
#自分のタスクは除く
continue
}
$HostName = $Task."ホスト名"
$BeforeRunTime = $Task."前回の実行時刻"
$TaskName = $Task."タスク名".SubString(1)
$BeforeResult = $Task."前回の結果"
"$HostName,$TaskName,$BeforeRunTime,$BeforeResult" | Out-File $OutPut -append -encoding default
}
}
# -----------------------------
# 実行結果、戻り値1以上の場合メール送信
# -----------------------------
$now = Get-Date -F F
#システムよりデータ抽出処理
gettasks
$task1 = ""
$task1 = Get-Content $OutPut | ConvertFrom-CSV | where {$_.RESULT -gt 0}
if($task1 -ne $null){
$task2 = Get-Content $OutPut | ConvertFrom-CSV | where {$_.RESULT -gt 0} > $OutPut2
# メール送信処理開始
$subject = "タスク実行異常"
$body = "確認時刻 --" + $now
$body = $body + [String]::Join("`r`n",(Get-Content $OutPut2))
# メール情報。宛先は;で複数指定可能
$smtp = "(smtpサーバIPアドレス Or ホスト名)" #SMTPサーバ(必須項目)
$from = "(送信元アドレス)" #送信元(必須項目)
# New-Opjectコマンドレットで.NETクラスをインスタンス化。
$mail = New-Object Net.Mail.MailMessage
$mail.From = $from
$mail.ReplyTo = $replyTo
$mail.Subject = $subject
$mail.Body = $body
# エンコーディング。System.Text.Encodingの静的メンバにアクセスするため::を用いている。
$mail.SubjectEncoding = [Text.Encoding]::GetEncoding("csISO2022JP")
$mail.BodyEncoding = [Text.Encoding]::GetEncoding("csISO2022JP")
# To設定。複数設定可能。
#$mail.To.Add("宛先")
$mail.To.Add("宛先メールアドレス")
#CC設定(必要があれば)
# $mail.CC.Add("CC")
# ReplyTo設定。設定なしも可。
#if($replyTo -ne ""){ $mail.ReplyTo = $replyTo }
# 添付ファイル
$temp = New-Object Net.Mail.Attachment($OutPut)
$mail.Attachments.Add($temp);
# New-Opjectコマンドレットで.NETクラスをインスタンス化。
$sc = New-Object Net.Mail.SmtpClient($smtp)
# 送信。
$sc.Send($mail)
$mail.Dispose()
Remove-Item $OutPut2
}
#if($task1 -eq $null)
# {
# exit
# }
#else
# {
# }
◆PSファイルをキックするためのBATファイル
powershell.exe -executionPolicy RemoteSigned -F C:\BatFolder\TaskResultchecker\schmoniter.ps1