先日「NetAppの設定内容をcsvファイルに出力したい」という記事で手動でやる手法について記載した。
最近のWindowsだと直接sshコマンドが実行できるようになっているので、NetApp側に公開鍵を登録して、パスワードなしでアクセスできるように設定した上で、PowerShellスクリプトを実行することで、設定をスクリプト化できないかを実施してみた。
とりあえず全項目とればいいか、と「-showallfields true」設定でやっているが、下記スクリプトはONTAP 9.10.1の場合のもので、バージョンが異なると全部の項目数が変わる可能性があるので、一度手動で「set -privilege admin -rows 0 -units GB -showallfields true ; vserver cifs share show”」を実行し、出力される項目名を確認しておくこと
# タブ区切りのため `t を指定
$count=0
$flag=0
$results=@()
$results=cmd /c ssh.exe -l admin NetAppクラスタ "set -privilege admin -rows 0 -showseparator `t -units GB -showallfields true ; vserver cifs share show" | ForEach-Object {
$line=$_.split("`t")
if(($line[0] -eq "vserver") -and ($flag -eq 0)){
$flag=1
$titlecount=$count
}
if(($flag -eq 1) -and ($count -gt ($titlecount+1))){
$output = New-Object -TypeName psobject
$output | Add-Member -MemberType NoteProperty -Name "vserver" -Value $line[0]
$output | Add-Member -MemberType NoteProperty -Name "share-name" -Value $line[1]
$output | Add-Member -MemberType NoteProperty -Name "cifs-server" -Value $line[2]
$output | Add-Member -MemberType NoteProperty -Name "path" -Value $line[3]
$output | Add-Member -MemberType NoteProperty -Name "share-properties" -Value $line[4]
$output | Add-Member -MemberType NoteProperty -Name "symlink-properties" -Value $line[5]
$output | Add-Member -MemberType NoteProperty -Name "file-umask" -Value $line[6]
$output | Add-Member -MemberType NoteProperty -Name "dir-umask" -Value $line[7]
$output | Add-Member -MemberType NoteProperty -Name "comment" -Value $line[8]
$output | Add-Member -MemberType NoteProperty -Name "acl" -Value $line[9]
$output | Add-Member -MemberType NoteProperty -Name "attribute-cache-ttl" -Value $line[10]
$output | Add-Member -MemberType NoteProperty -Name "volume" -Value $line[11]
$output | Add-Member -MemberType NoteProperty -Name "offline-file" -Value $line[12]
$output | Add-Member -MemberType NoteProperty -Name "vscan-fileop-profile" -Value $line[13]
$output | Add-Member -MemberType NoteProperty -Name "max-connections-per-share" -Value $line[14]
$output | Add-Member -MemberType NoteProperty -Name "force-group-for-create" -Value $line[15]
$output
}
$count++
}
$results | Export-Csv test.csv -Encoding UTF8 -NoTypeInformation -NoClobber