PowerShell重命名计算机问题--带下划线的名称

PowerShell重命名计算机问题--带下划线的名称,powershell,scripting,Powershell,Scripting,我正在使用重命名计算机编写PowerShell脚本,遇到了一个奇怪的问题: PS C:\Users\Administrator>重命名计算机-新名称395\u s2 重命名计算机:跳过具有新名称“395_s2”的计算机“ztest”,因为新名称无效。输入的新计算机名格式不正确。标准名称可以包含字母(a-z、a-z)、数字(0-9)和连字符(-),但不能包含空格或句点()。名称不能完全由数字组成,长度不能超过63个字符 我真的希望能够在机器名中使用下划线,-Force标志不会改变输出 当我在计算机

我正在使用重命名计算机编写PowerShell脚本,遇到了一个奇怪的问题:

PS C:\Users\Administrator>重命名计算机-新名称395\u s2

重命名计算机:跳过具有新名称“395_s2”的计算机“ztest”,因为新名称无效。输入的新计算机名格式不正确。标准名称可以包含字母(a-z、a-z)、数字(0-9)和连字符(-),但不能包含空格或句点()。名称不能完全由数字组成,长度不能超过63个字符

我真的希望能够在机器名中使用下划线,-Force标志不会改变输出

当我在计算机->系统属性->计算机名称/域更改中手动输入相同的名称时,它会询问:

是否要使用此计算机名

名称“395_s2”包含非标准字符。这可能会导致某些应用程序或网络硬件出现问题


我可以选择是并覆盖非标准字符。有没有直接在PowerShell中执行此操作的方法?

作为回答,我不会向您展示如何使用下划线重命名您的计算机,相反,我强烈建议您不要在计算机名称中使用下划线

我想让您参考RFC1178,它的设计宗旨是帮助人们在命名计算机时做出正确的决定。您可以在以下网址找到:

至于为什么不应该这样做,如果主机名中有下划线,那么许多应用程序和系统将无法工作,包括Internet Explorer这样的标准应用程序和系统


此外,域密钥和服务记录等系统使用下划线作为一种手段,以确保其特殊字符不会与主机名(参考:)混淆。

使用WMI似乎没有这种限制。我刚在自己的电脑上测试过

(Get-WmiObject Win32_ComputerSystem).Rename("te_st")
这不是重命名计算机,但它看起来可以工作。我也将在Mad的帖子上转载我的评论。有一篇关于计算机名称和下划线的帖子非常好

引用其中一个答案,并同意疯狂科学家的观点

虽然使用下划线是有效的,但这不是推荐的做法


不幸的是,我不是那个选择用这种命名方案命名这些计算机的人。我唯一的选择是继续使用当前包含下划线的命名方案。这些大多是测试机器,它们甚至可能不会像Internet Explorer那样运行标准的东西。它们会连接到其他任何东西吗?如果名称中有下划线,DNS记录将出现问题,因为它会为服务记录保留该字符。也许你可以建议超级计算机使用连字符,因为从技术上讲,a-Z、0-9和连字符(-)是计算机名的唯一有效字符。我会向负责这些机器的人员提出,但您可能会认为有一种方法可以在PowerShell中覆盖它,因为有一种方法可以手动覆盖它。如果你还能想到/找到什么,请告诉我!我们一致认为可能会发生冲突。然而,在许多现代环境中,这种冲突可能不会发生。我用sharepoint为我的测试域构建了一个开发环境,在dns环境中使用下划线,到目前为止还没有出现问题。也为好的阅读:非常感谢!出于某种原因,我也需要在其中添加一些凭证,但这就像一种魅力。