【问题标题】:Using Powershell to auto fill part of a computer name in a rename script?使用 Powershell 在重命名脚本中自动填充部分计算机名称?
【发布时间】:2021-02-13 04:57:38
【问题描述】:

对此有几个问题,有答案,但不幸的是,我无法让它们适应我的情况。我对 powershell 比较陌生,所以这可能就是原因。

为医院进行部署,每台计算机都有一个特定的部门。每台计算机都以最多 12 个字符的方案命名。例如:WPET04MRIT45 是旧设备。因此,我们将其更换为需要重命名为 WPET04MRIT65 的新机器。

现在我设置了一个可以很好地完成它的脚本。但是我可以让它为我打印出前 10 个字符,那么我所要做的就是输入新号码并继续前进吗?

现在,这是我的脚本:

$newname = Read-Host -Prompt 'Computers new name'

$user = Read-Host -Prompt 'Input the username'

Rename-Computer -ComputerName localhost -NewName $newname -DomainCredential $user; Restart-Computer'

所以当我运行它时,它会输出“计算机新名称”我输入完整的新名称

然后它会询问我的用户名我输入了我的用户名

然后我按回车键,它会提示我输入密码并重新启动。

这很好,它有效。这种方式比旧方式更快。但话虽如此:

我可以让它从“localhost”中提取计算机名称的前 10 位数字,并在出现时将其输出到“计算机新名称”字段中,这样我只需输入最后 2 个字符?

例如,输出将是:

计算机新名称:localhost 的前 10 个字符 我会填写最后 2 个字符

用户名:我输入了我的用户名

然后它会提示输入密码并重新启动。

【问题讨论】:

  • 你可以试试$NewName = $(-join $env:computername[0..9]) + (read-host "Enter the last two characters of the new name: )
  • 请注意,无论是否指定提示符,读取主机都会提供自己的分号。

标签: powershell rename


【解决方案1】:

由于您希望它打印出前 10 个字符并且只需键入 2,因此您可以先输入 Write-Host,然后输入 Read-Host

Write-Host "    Current name: $($env:COMPUTERNAME)`n`n"

$lasttwo = Read-Host -Prompt '    Enter the last two characters of the new name'

$newname = $env:computername[0..9] + $lasttwo

$user = Read-Host -Prompt '    Input the username'

Rename-Computer -ComputerName localhost -NewName $newname -DomainCredential $user; Restart-Computer

编辑

感谢 AdminOfThings 指出如果名称少于 10 个字符,上述方法会出错。以下更改将防止错误除非设置了strictmode 3.0 版

Write-Host "    Current name: $($env:COMPUTERNAME)`n`n"

$lasttwo = Read-Host -Prompt '    Enter the last two characters of the new name'

$newname = $($env:COMPUTERNAME).Substring(0,10) + $lasttwo

$user = Read-Host -Prompt '    Input the username'

Rename-Computer -ComputerName localhost -NewName $newname -DomainCredential $user; Restart-Computer

【讨论】:

  • 即使 OP 没有提到这种情况,要考虑的另一件事是计算机名称可能已经少于 10 个字符。在这种情况下,子字符串方法将在长度上出错,无需额外计算。
  • 啊,是的,他确实说过“最多 12 个” - 绝对要牢记。
  • 这不会是一个问题,我应该更清楚地说明,每台计算机名称都是 12 个字符,因此子字符串不会影响任何内容。感谢您的回复。
  • @AdminOfThings 介意我将您的方法添加到此答案中吗?少就不会报错。
  • @DougMaurer,去吧。甚至我在 cmets 中的方法也不能幸免。如果设置了严格模式版本 3,我的系统将在较短长度的系统上失败。因此,简单解决方案有一些注意事项。
猜你喜欢
  • 2014-03-07
  • 2019-07-05
  • 2017-11-26
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 2013-06-07
相关资源
最近更新 更多