PowerShell でリモートWMI接続エラー 0x80070005 の解決法? (HDD容量ログ出力)
参考にしたサイトをなくしてしまいました!
Format-Table を使っていたけれど、Add-Contentで使えないので削除し、文字列フォーマットを適当に使って Add-Contentを使う様にしました。
Format-Table ○○ | Add-Content
で何故できないのだろうか・・・
ちなみに
Format-Table ○○ | Out-File
なら出力されるけど、文字化けがひどく
-Encoding
指定でエラーになるため、面倒なので書き換えをやめました。
1.ログイン認証情報の保存する。
$root = Split-Path $MyInvocation.MyCommand.Path $file = "○○ネットワークサーバ.pass" $path = Join-Path $root $file $servers = @() $servers += "192.168.0.1" $servers += "192.168.0.2" $servers += "192.168.0.3" $credential = Get-Credential $credential.Password | ConvertFrom-SecureString | Set-Content $path
2.ログイン情報を元にWMI接続を行う。
$root = Split-Path $MyInvocation.MyCommand.Path $file = "○○ネットワークサーバ.pass" $logfile = "○○ネットワークサーバ_hdd_size.txt" $logpath = (Join-Path $root $logfile) $password = Get-Content (Join-Path $root $file) | ConvertTo-SecureString $credential = New-Object System.Management.Automation.PSCredential "userid@domain",$password $targets = @() $servers += "192.168.0.1" $servers += "192.168.0.2" $servers += "192.168.0.3" filter GetDiskSize { $server_name = $_ echo "■サーバ ${server_name}に接続します。" | Add-Content $logpath try { Get-WmiObject -Class win32_logicaldisk -ComputerName $_ -Credential $credential | select -Property DeviceID, Size, FreeSpace, ` @{Name = "ServerName"; Expression = { $server_name }} } catch [UnauthorizedAccessException] { echo "`t>> アクセス権限エラー" | Add-Content $logpath } } filter OutLogFile { [string]$olf_servename = $_.ServerName [string]$olf_drivename = $_.DeviceID [string]$olf_size = ("{0:0.00}GB" -F ($_.Size / 1GB)) [string]$olf_usage = ("{0:0.00}GB" -F (($_.Size - $_.FreeSpace) / 1GB)) [string]$olf_filespace = ("{0:0.00}GB" -F ($_.FreeSpace / 1GB)) [string]$olf_rate = "-" try { $olf_rate = ("{0:0.00}%" -F ($_.FreeSpace / $_.Size * 100)) } catch [Exception] {} "{0}`t{1}`t{2}`t{3}`t{4}" -f $olf_drivename,$olf_size,$olf_usage,$olf_filespace,$olf_rate | Add-Content $logpath } #文字列配列でサーバ名を列挙し、列挙したサーバ名全部の容量を出力する echo "【HDD容量】" | Set-Content $logpath echo ("{0}`t{1}`t{2}`t{3}`t{4}" -f "レター","容量","使用量","空き容量(GB)","空き容量(%)") | Add-Content $logpath $targets | GetDiskSize | OutLogFile $logpath