Zabbixバージョン:4.0.7
PC:windows2008(リモート接続)
PowerSellバージョン:2.0
※自社で使っているので、変更不可
■やりたいこと
自動インストールのスクリプトを作成しましたが、一部のconfファイルの変更コマンドが反映されないので反映させたい。
■問題
下記のコマンドをスクリプトで使用した際、logファイルだけが変更されず、C直下に置かれてしまう。
#■コマンド
###引数
#####ユーザーが設定する
$IP = "..."
$log_path = "c:\zabbix\zabbix_agentd.log"
$Metadata = "windows2008"
#####以下本文
フォルダパス
$folder = @("C:\zabbix","C:\zabbix\bin","C:\zabbix\conf")
フォルダ作成
New-Item $folder[0] -ItemType Directory
位置パス定義
現在のスクリプトパス
$file_path = (Convert-Path .)
標準出力に表示
Write-Host $file_path
スクリプト出力ログ
Start-Transcript -Path ($file_path+"\zabbixAgentインストール.log")
ファイルパス
zipファイル
$zip = @(($file_path+"\Desktop\zabbix_agents.zip"),"C:\zabbix\zabbix_agents.zip")
exe:移動前/移動後
$exe_path = @("C:\zabbix\bin\zabbix_agentd.exe","C:\zabbix\zabbix_agentd.exe")
conf:移動前/移動後
$conf_path = @("C:\zabbix\conf\zabbix_agentd.conf","C:\zabbix\zabbix_agentd.conf")
#####confファイル用
log
$LogFile = @("LogFile=c:\zabbix_agentd.log",("LogFile="+$log_path))
zabbixIPアドレス
$Server = @("Server=127.0.0.1",("Server="+$IP))
$ServerActive =@("ServerActive=127.0.0.1",("ServerActive="+$IP))
hostname
$Hostname = "Hostname=Windows host"
メタデータ
$HostMetadata = @("# HostMetadata=",("# HostMetadata=r
nr
nHostMetadata="+$Metadata))
#####処理開始
zipファイル移動
Move-Item $zip[0] $zip[1]
解凍
$file = $zip[1]
$shell = New-Object -ComObject shell.application
$zip_file = $shell.NameSpace($file)
$dest = $shell.NameSpace((Split-Path $file -Parent))
$dest.CopyHere($zip_file.Items())
exeファイル配置
Move-Item $exe_path[0] $exe_path[1]
confフォルダ配置
Move-Item $conf_path[0] $conf_path[1]
confファイル書き換え
-Encoding UTF8
$conf= Get-Content $conf_path[1] -Encoding UTF8
zabbixサーバ設定
$conf = $(Get-Content $conf_path[1]) -replace $Server[0],$Server[1]
$conf > $conf_path[1]
Zabbixアクティブサーバ設定
$conf = $(Get-Content $conf_path[1]) -replace $ServerActive[0],$ServerActive[1]
$conf > $conf_path[1]
Logファイル設定
$conf = $(Get-Content $conf_path[1]) -replace $LogFile[0],$LogFile[1]
$conf > $conf_path[1]
ホスト名
$result = hostname
$conf = $(Get-Content $conf_path[1]) -replace $Hostname,("Hostname="+$result)
$conf > $conf_path[1]
Zabbixサーバ自動登録をするためのメタデータ
$conf = $(Get-Content $conf_path[1]) -replace $HostMetadata[0], $HostMetadata[1]
$conf > $conf_path[1]
エンコード
-Encoding default
$conf | Out-file $conf_path[1] -Encoding default
#####ZabbixAgentサービス開始
exe実行
cd $folder[0]
.\zabbix_agentd.exe -i -c $conf_path[1]
スタートアップの種類:手動
Get-Service -DisplayName 'Zabbix Agent' | Set-Service -StartupType Manual
サービス開始
cd $folder[0]
.\zabbix_agentd.exe -s -c $conf_path[1]
スタートアップの種類:自動
Set-Service -Name 'Zabbix Agent' -StartupType Automatic
zipファイル削除
Remove-Item $zip[1] -Recurse
binファイル削除
Remove-Item $folder[1] -Recurse
confファイル削除
Remove-Item $folder[2] -Recurse
起動確認
Get-service "Zabbix Agent" | select-object displayname,status,starttype,PathName
ポーズ
Read-Host "続けるには Enter キーを押してください..."
結果を出力する
Stop-Transcript
不明瞭なことがあれば追加で記述しますので、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー