以前、PowerCLI で作業履歴を残す方法をポストしました。
今回はこれを
PowerCLI コンソール起動時に、自動的に開始できるようにしてみようと思います。
PowerCLI のベースになっている PowerShell の起動時には
$profileという変数の PowerShell スクリプトが実行されます。
※bash の「.bash_profile」ファイルのような感じです。
今回の例では Windows 7 環境で実行していて、ファイル名は
C:\Users\<ユーザ名>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
となっています。
PowerCLI C:\work> Get-Variable -Name profile | ft -AutoSize
Name Value
---- -----
PROFILE C:\Users\gowatana\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
PowerCLI C:\> $profile
C:\Users\gowatana\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
デフォルトだと、このスクリプトファイルも、
配置されるディレクトリも存在しません。
PowerCLI C:\> dir C:\Users\gowatana\Documents\WindowsPowerShell
Get-ChildItem : パス 'C:\Users\gowatana\Documents\WindowsPowerShell' が存在しないため検出できません。
発生場所 行:1 文字:4
+ dir <<<< C:\Users\gowatana\Documents\WindowsPowerShell
+ CategoryInfo : ObjectNotFound: (C:\Users\gowatana\Documents\WindowsPowerShell:String) [Get-ChildItem]、ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
そこで、スクリプトファイルを新規作成します。
このとき、WindowsPowerShell というディレクトリ
(C:\Users\<ユーザ名>\Documents\WindowsPowerShell)も新規作成します。
PowerCLI C:\> mkdir C:\Users\gowatana\Documents\WindowsPowerShell
ディレクトリ: C:\Users\gowatana\Documents
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2014/05/14 2:36 WindowsPowerShell
PowerCLI C:\> notepad C:\Users\gowatana\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
スクリプトファイル Microsoft.PowerShell_profile.ps1 には、
下記のような内容を記載して保存しておきます。
Microsoft.PowerShell_profile.ps1
$log_dir = "c:\work\log"
$time_stamp = Get-Date -Format "yyyyMMddHHmmss"
$log_file = $log_dir + "\" + $Env:COMPUTERNAME + "_" + $Env:USERNAME + "_" + $time_stamp + ".log"
Start-Transcript $log_file
PowerCLI のコンソールを起動してみると、
下記のようにスクリプトが自動実行され、作業履歴の取得が開始されます。
※上記のスクリプトのでは、事前に C:\work\log フォルダを作成しておく必要があります。
トランスクリプトが開始されました。出力ファイル: c:\work\log\X121E-01_gowatana_20140514024600.log
Welcome to the VMware vSphere PowerCLI!
Log in to a vCenter Server or ESX host: Connect-VIServer
To find out what commands are available, type: Get-VICommand
To show searchable help for all PowerCLI commands: Get-PowerCLIHelp
Once you've connected, display all virtual machines: Get-VM
If you need more help, visit the PowerCLI community: Get-PowerCLICommunity
Copyright (C) 1998-2013 VMware, Inc. All rights reserved.
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>
実際はこのような感じになります。
以上、PowerShell プロファイルで
PowerCLI の作業履歴取得を自動開始してみる話でした。