ローカルマシンのMACアドレスとの文字列比較を使用して、txtファイル$pcliste
からコンピュータ名を抽出しようとしました。テキストファイルが含まれています:MACアドレス文字列の比較に失敗しました
super-pc 00:15:5D:FF:0B:33 av-client4 00:15:5D:FF:0B:38 temp 00:15:5D:FF:0B:39
私は、次のPowerShellのコードを使用します。
$macadresse = Get-WmiObject Win32_NetworkAdapterConfiguration | select macaddress
$macadresse = $macadresse.macaddress
$pcnamen = Get-Content -Path $pcliste
$computername = "TEMP-NAME"
for ($i=0; $i -lt $pcnamen.Length; $i++) {
$string = $pcnamen[$i]
if ($string -match $macadresse) {
write "MAC found!"
$index = $pcnamen[$i].IndexOf(" ")
$computername = $pcnamen[$i].substring(0, $index)
}
}
私のテストVMのMACアドレスは00:15:5D:FF:0B:38
ですが、ループ内の文字列の比較は偽のまま。
私は既にMACを文字列変数に入れました。これはGet-WmiObject
を使って抽出しました。これはうまくいきます。 また、抽出したmacadressを[string]$macadress
を使って文字列に変換しようとしました。
私はそれが-match
を失敗させる原因となる何らかの種類のデータ型/オブジェクト型問題だと考えます。
'$ macadresse'はおそらく配列です。ですから、 '-match'ではなく' -in'/'-contains'を使うか、配列をループする必要があります。 – BenH
あなたは明らかにホスト名とMACアドレスの行を読んでいるので、それらを分割したいので、MACアドレスだけで変数を取得します(そうでなければ '-contains' /' -in'は動作しません): '$ホスト名、$ string = $ pcname [$ i] -split '\ s +' ' –