【问题标题】:PowerShell Rename-Computer issue -- names with underscoresPowerShell 重命名-计算机问题 - 带有下划线的名称
【发布时间】:2014-07-16 21:02:52
【问题描述】:

我正在使用 Rename-Computer 编写 PowerShell 脚本,但遇到了一个奇怪的问题:

PS C:\Users\Administrator> 重命名-计算机-NewName 395_s2

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

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

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

您要使用此计算机名称吗?

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

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

【问题讨论】:

    标签: powershell scripting


    【解决方案1】:

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

    (Get-WmiObject Win32_ComputerSystem).Rename("te_st")
    

    它不是重命名计算机,但它看起来很有效。还将重新发布我对 Mad 帖子的评论。有一篇关于计算机名称和下划线的非常好的帖子。 The use of the underscore in host names

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

    虽然它的有效使用强调它不是推荐的做法。

    【讨论】:

    • 非常感谢!出于某种原因,我还需要在其中添加一些凭据,但这就像一个魅力。
    【解决方案2】:

    作为答案,我不会向您展示如何使用下划线重命名您的计算机,而是强烈建议您不要在计算机名称中使用它们。

    我想向您推荐 RFC 1178,它的设计目的只是为了帮助人们在命名他们的计算机时做出正确的决定。您可以在以下位置找到它:

    https://www.rfc-editor.org/rfc/rfc1178

    至于为什么不应该这样做,如果您的主机名中包含下划线,则有许多应用程序和系统将无法运行,包括 Internet Explorer 之类的标准。

    DomainKeys 和服务记录等 Plus 系统使用下划线来确保它们的特殊字符不会与主机名混淆(参考:Wikipedia)。

    【讨论】:

    • 不幸的是,我不是选择使用这种命名方案来命名这些计算机的人。我唯一的选择是继续当前涉及下划线的命名方案。这些主要是测试机器,它们甚至可能不会像 Internet Explorer 那样运行标准的东西。
    • 它们会连接到其他任何东西吗?如果名称中有下划线,DNS 记录就会出现问题,因为它会为服务记录保留该字符。也许您可以建议使用连字符代替,因为从技术上讲,A-Z、0-9 和连字符 (-) 是计算机名称的唯一有效字符。
    • 我会向负责这些机器的人员提出,但您会认为在 PowerShell 中有一种方法可以覆盖它,因为可以手动覆盖它。如果您能想到/找到其他任何东西,请告诉我!
    • 同意可能出现冲突。然而,在许多现代环境中,可能不会出现这种冲突。我使用下划线和工作 dns 环境为我的测试域构建了一个开发环境,并且到目前为止还没有问题。也适合阅读:stackoverflow.com/questions/10959757/…
    猜你喜欢
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 2013-05-20
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多