使用powershell变量在命令提示符中更改PC名称和Doamain

使用powershell变量在命令提示符中更改PC名称和Doamain,powershell,batch-file,Powershell,Batch File,我正在尝试创建一个批处理文件,以便将名称和域更改为新的PC 添加到域部分工作正常,但计算机名部分工作不正常 我在使用-NewName中的变量时遗漏了一些内容,因为我得到了错误: NewName不能为null或空 如果我直接在powershell窗口中运行这些命令,它们就可以正常工作 :: Change Computer Name powershell -command "$pcname = Read-Host -Prompt 'Input the new PC name'" powershell

我正在尝试创建一个批处理文件,以便将名称和域更改为新的PC

添加到域部分工作正常,但计算机名部分工作不正常

我在使用
-NewName
中的变量时遗漏了一些内容,因为我得到了错误:

NewName不能为null或空

如果我直接在powershell窗口中运行这些命令,它们就可以正常工作

:: Change Computer Name
powershell -command "$pcname = Read-Host -Prompt 'Input the new PC name'"
powershell -command "Rename-Computer -NewName $pcname"

:: Add PC to the Domain
powershell -command "add-computer -domainname domain.name -Credential AD\admin.user"

另外,我最初对电脑命名的计划也有点不同

例如,所有PC的命名方式都包括部门和名称中的数字。 假设我有两个部门:“创意”和“客户支持”。 因此,PC的原始名称(我正在从预制作的图像恢复)将相应地为CSR和GFX。 所以我只需要更改号码

我试图写一个命令,它将结合当前的PC名称+用户在CMD窗口上请求时输入的号码。 这一部分运气不好,我想问题再次是我缺少的东西,在cmd脚本中如何使用该变量

谢谢你抽出时间

有一个
NewName
参数,因此您可以在一个命令中加入域并重命名计算机:

Add-Computer -DomainName domain.name -Credential AD\admin.user -NewName (Read-Host -Prompt 'Input the new PC name')
您可以使用
$env:computername
变量获取计算机的当前名称,因此将此变量与
读取主机
组合,以提示输入数字并将其与当前名称一起使用:

Add-Computer -DomainName domain.name -Credential AD\admin.user -NewName "$env:computername$(Read-Host -Prompt 'Enter PC Number')"

我还将从进程中删除批处理文件,powershell取代了批处理,并可以尽其所能做更多的事情

只需将命令保存在扩展名为.ps1的纯文本文件中。然后,这是一个powershell脚本文件,您可以直接运行它(右键单击并选择“使用powershell运行”),如果要自动化此过程,则可以通过命令行运行:

powershell -File C:\folder\script.ps1

在第一个
powershell
命令中设置的变量将不会进入第二个
powershell
命令。我无法想象为什么您会认为脚本中设置的变量在另一个脚本中可用。尝试将
Read Host
Rename Computer
放在一个
powershell
命令中:
powershell-command“$pcname=Read Host-Prompt‘Input the new PC name’;Rename Computer-NewName$pcname”
。为什么要使用批处理文件来运行powershell命令?跳过这个中间步骤,将命令另存为powershell脚本(.ps1文件),然后直接或通过命令行运行它:
powershell-file C:\folder\script.ps1
…AlexP,我用这种方式编写命令,因为我不知道哪种方式正确。这就是我在这里寻求帮助的原因,因为我自己无法真正弄清楚到底出了什么问题。经过多次搜索,我在某个地方迷路了。谢谢你的建议。我将在星期一试一试。James,我之所以使用它,是因为我想在另一个批处理文件中实现这个命令,我有很多函数。它有98%的cmd和2%的powershell,所以我认为在本例中最好添加这样的命令。