RunOnce 在重新启动时使用随机名称重命名计算机名



我们是一个学习中心,有时由于不同的原因我们无法对机器进行系统准备。当我不对机器进行系统准备时,我最终会使用相同的计算机名克隆一台机器 25 次。

然后,我必须在每个工作站上手动更改计算机名称,然后重新启动它们。

我想知道我是否可以使用在关闭计算机(预克隆)之前执行的批处理文件或 powershell 脚本。然后,在下次重新启动(仅一次)时,计算机将随机更改计算机名称,从而为我节省大量时间。

我在Windows XP到Windows Server 2012R2下执行此操作。在所有这些操作系统下工作的独特解决方案将是神奇的,但我主要在Server 2008 +上这样做。例如,我不介意使用适用于WinXP-Win7的批处理文件和适用于Windows 2008至2012的Powershell!

谢谢大家!

可以使用 Get-Random cmdlet 生成随机名称。

# Set allowed ASCII character codes to Uppercase letters (65..90), 
$charcodes = 65..90
# Convert allowed character codes to characters
$allowedChars = $charcodes | ForEach-Object { [char][byte]$_ }
$LengthOfName = 10
# Generate computer name
$pw = ($allowedChars | Get-Random -Count $LengthOfName) -join ""

可以使用 cmdlet 重命名计算机更改计算机名称。要将其设置为运行一次,最简单的方法是在注册表项中添加一个条目

HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce   

这将使用您的脚本调用 PowerShell。

为了方便起见,我想添加两种方法来生成具有所有允许字符的名称,从大写字母和 15 个字符的长度开始

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
Set "Chars=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
Call :RandChar 26 Name
For /L %%A in (1,1,14) Do Call :RandChar 62 Name
Echo %Name%
Goto :Eof
:RandChar Range Var
Set /A Pnt=%Random% %% %1 & Set %2=!%2!!Chars:~%Pnt%,1!

PowerShell

$chars = [char[]]"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
[string](($chars[0..25]|Get-Random)+(($chars|Get-Random -Count 14) -join ""))

相关内容

  • 没有找到相关文章

最新更新