powershell - 将序列号与给定的计算机名匹配
问题描述
我希望将我的计算机重命名为特定的计算机名。该脚本应识别我的序列号并匹配给定的计算机名。
例如,我有一个带有特定计算机名的序列号列表。
txt.file
$COMPUTERNAME01;$SERIALNUMBER
$COMPUTERNAME02;$SERIALNUMBER
$COMPUTERNAME03;$SERIALNUMBER
$COMPUTERNAME04;$SERIALNUMBER
rename.ps1
$serial = gwmi win32_bios | select -ExpandProperty Serialnumber
$pos = $name.IndexOf(";")
$leftPart = $name.Substring(0,$pos)
$rightPart = $name.Substring($pos +1)
$newName = $leftPart WHERE $righPart eq $serial
rename-computer -newname $newName
我猜错误出在 WHERE 命令上,但我真的不知道该放什么
解决方案
假设您拥有的文本文件是一个 csv 文件,;
其分隔符为不带标题的分隔符。
在这种情况下,您可以这样做:
$names = Import-Csv -Path 'X:\PcNamesAndNumbers.csv' -Header 'ComputerName','BiosSerial' -Delimiter ';'
$serial = Get-WmiObject -Class Win32_Bios | Select-Object -ExpandProperty Serialnumber
$newName = $names | Where-Object { $_.BiosSerial -eq $serial } | Select-Object -First 1
if ($newName) {
Rename-Computer -NewName $newName.ComputerName -Force -WhatIf
}
确保您将-WhatIf
开关保持在适当的位置,直到您通过阅读控制台中写入的任何内容来确定是否正确为止。删除该开关以实际执行重命名。
推荐阅读
- javascript - 在 HTML/CSS 标题下居中字幕
- bash - Vim on git bash on window(MINGW64) 在提交消息上自动换行
- python - 如何使用 PIL 在图像中“取消绘制”一个框
- javascript - fn使用 colspan 为 th 更新多 td
- .net - await 调用崩溃但 .Result 成功
- sas - 尝试使用 where 语句创建二进制变量
- javascript - 异步/等待不适用于 AWS S3 Node.js 开发工具包
- javascript - Javascript 幻灯片如何使其更干燥
- sql-server - 我可以在 ssrs 报告中添加过滤器按钮吗?
- python - celery flask PicklingError,属性查找
在 flask_security.core 上失败