| Works
リモートのWindowsホストからARPテーブルを集めるPowerShellスクリプト
ちょっと前にお仕事で作ったやつが発掘されたので、ネタもないし備忘的に残しておこうかと。
トラブルシュートで急遽作ったものなので、内容はあまり考えず必要なことだけをやっている。
そもそもやっていることは"Invoke-Command"が使える環境で"arp -a"を実行しているだけですね。
あとは実行対象をリストしたファイルと、結果をホストごとに分けて出力しているくらい。認証に関しても対象がWindows想定なのでお好みで(デフォルトでは共通アカウントで一回限り実行の想定なので都度入力)。
# Parameters
$HostFile = $PSScriptRoot + "\hosts.txt"
$LogFolder = $PSScriptRoot + "\logs"
# Credential
$Credential = Get-Credential
#$SecureString = ConvertTo-SecureString "Password" -AsPlainText -Force
#$Credential = New-Object System.Management.Automation.PsCredential "DOMAIN\Administrator", $SecureString
# Import hosts list
$HostList = Get-Content $HostFile
if (!(Test-Path $LogFolder)) {
New-Item $LogFolder -ItemType Directory
}
# Main Routine
#$ErrorActionPreference = "silentlycontinue"
foreach ($TargetHost in $HostList) {
$NowDateTime = (Get-Date).ToString("yyyy/MM/dd HH:mm:ss")
$LogFile = $LogFolder + "\$TargetHost.txt"
$Result = Invoke-Command -ScriptBlock {arp -a} -ComputerName $TargetHost -Credential $Credential
Write-Output "$NowDateTime ------------------------------------------------------------" | Add-Content -Path $LogFile
Write-Output $Result | Add-Content -Path $LogFile
}
exit
結局、どんなトラブルだったのかはよく覚えていない😓