再来分享一个项目上用到的PowerShell脚本,都是一些很简单的PowerShell语句,这个脚本的功能主要是为了实现收集每台客户端机器上的MAC地址,然后输出到记事本文件当中,本例中分享的脚本是将结果输出到客户端的桌面上,当然为了统计方便也可以统一输入到一个文件服务器中。下边来看脚本内容
Import-Module NetAdapter $path = [Environment]::GetFolderPath("Desktop") + "\MacAddress.txt" Add-Content $path "$env:COMPUTERNAME 中有如下网络适配器,Mac地址分别为:`r`n" $rules = "\b[0-9,a-z]\b" foreach ($id in (Get-NetAdapter).InterfaceIndex) { $name = (Get-NetAdapter -InterfaceIndex $id).name $count = 0 for ($i = 0; $i -lt $name.length; $i++) { if ($name[$i] -notmatch $rules -and $name[$i] -ne " " -and $name[$i] -ne "(" -and $name[$i] -ne ")") { $count++ } } $length = 30 - $name.length - $count Add-Content $path "$name $(‘ ‘ *$length) Mac地址为:$((Get-NetAdapter -InterfaceIndex $id).MacAddress)" } Add-Content $path "==================================================================="
这个脚本说实话按语法来说实在是没啥可说的,都是很简单的语法
不过我觉得唯一勉强算得上亮点可能是输出到记事本中对于中文的处理,众所周知的是因为中文按照两个字符,所以输出到记事本中的文本不管怎么样始终都无法对齐,这样看着实在别扭,如果适配器名称是中文就会看到这一行会比其他英文行凸出来一些,这个效果还是挺恶心人的 对于一个强迫症来说这个不能忍,试了试各种编码方式都没办法解决,看来只有来一个个判断了!这里用到了一个简单的正规表达式来判断是否是英文,因为表达式中没包括()和空格,所以只能在后期的语句里又加入了对于这部分的判断,总体上是可以区分出适配器名称中的中英文了,有了这样的逻辑语句,输出整齐的内容就不再是什么问题了。如果有兴趣可以试试直接将结果输出到记事本是什么效果。
这次就介绍到这了,希望能对大家有哪怕稍微一丝的帮助
时间: 2024-10-03 16:37:10