使用 WMIC 重命名 PC
Rename PC with WMIC
我需要实现一些非常简单的事情。作为将 运行 在数百台新 Windows 7 台机器上的 PowerShell 脚本的一部分,我需要在将它们加入域之前重命名它们。
我做了一些搜索,一个常见的解决方案似乎是:
wmic computersystem where name="%COMPUTERNAME%" call rename name="NEW-NAME"
但是,根据测试,我在执行时收到以下错误:
Invalid Verb Switch
这不正确吗?是否有更好的替代方案(无需在机器上升级 PowerShell)
编辑:如果 运行 通过批处理,文件 returns 成功,但实际上并没有重命名机器(即使在重新启动后)
为什么不这样重命名(这是我经常使用的片段):
Function Rename-Computer([string]$newComputerName)
{
$computer = Get-WmiObject -Class Win32_ComputerSystem
$computer.rename($newComputerName)
}
来源:http://powershell.com/cs/media/p/922.aspx
进一步的研究表明它可能是双引号,另一种方法可以 运行 这是:
cmd /c "wmic computersystem where name='%computername%' call rename name='NEW-NAME'"
请注意双引号是如何被单引号替换的,并且传递给 cmd.exe
的整个命令是在双引号字符串中传递的。
如果您有其他需要发出的 WMIC 命令,那么这可能比提出替代的 PowerShell 解决方案更轻松。
我需要实现一些非常简单的事情。作为将 运行 在数百台新 Windows 7 台机器上的 PowerShell 脚本的一部分,我需要在将它们加入域之前重命名它们。
我做了一些搜索,一个常见的解决方案似乎是:
wmic computersystem where name="%COMPUTERNAME%" call rename name="NEW-NAME"
但是,根据测试,我在执行时收到以下错误:
Invalid Verb Switch
这不正确吗?是否有更好的替代方案(无需在机器上升级 PowerShell)
编辑:如果 运行 通过批处理,文件 returns 成功,但实际上并没有重命名机器(即使在重新启动后)
为什么不这样重命名(这是我经常使用的片段):
Function Rename-Computer([string]$newComputerName)
{
$computer = Get-WmiObject -Class Win32_ComputerSystem
$computer.rename($newComputerName)
}
来源:http://powershell.com/cs/media/p/922.aspx
进一步的研究表明它可能是双引号,另一种方法可以 运行 这是:
cmd /c "wmic computersystem where name='%computername%' call rename name='NEW-NAME'"
请注意双引号是如何被单引号替换的,并且传递给 cmd.exe
的整个命令是在双引号字符串中传递的。
如果您有其他需要发出的 WMIC 命令,那么这可能比提出替代的 PowerShell 解决方案更轻松。