多行Powershell .CMD文件

时间:2018-09-20 14:53:35

标签: powershell cmd multiline

我正在尝试创建一个CMD文件,该文件将在启动时使用标准PowerShell命令加载PowerShell。问题在于,一旦在CMD中启动PowerShell,它将不再执行任何进一步的代码,基本上会停止。

要在加载PS之后执行其余代码,需要做什么?

对不起,我是编码和这个网站的新手!

powershell
$domain = "domain"
$password = "password" | ConvertTo-SecureString -asPlainText -Force
$username = "$domain\username" 
$credential = New-Object System.Management.Automation.PSCredential($username,$password)
Add-Computer -DomainName $domain -Credential $credential
Restart-Computer -Force

2 个答案:

答案 0 :(得分:0)

bat / cmd文件中的命令不会为您输入Powershell控制台。 CMD将启动powershell,然后等待其退出,然后再运行下一个命令,或者您描述为“停止”。

在脚本仅运行powershell的情况下,运行Powershell控制台(带有等待 user 输入的交互式提示)。由于您未指定要运行的命令或文件,因此它将无济于事。

要使其运行您的命令,请将命令另存为.ps1文件,然后使用powershell运行该文件:

powershell -File C:\folder\script.ps1

编辑:

但是,您正在尝试重新发明轮子,因为unattended domain join已经成为无人值守答案文件的一部分(请参见Windows System Image Manager),并且从Windows 7开始就可以使用。

答案 1 :(得分:0)

按照James C.的建议将PowerShell脚本放入.ps1文件中可能是最简单的方法。或者,可以将其放在单个命令中。当然,这应该符合最大命令行长度限制。

powershell -NoProfile -Command ^
    "$domain = 'domain';" ^
    "$password = 'password' | ConvertTo-SecureString -asPlainText -Force;" ^
    "$username = "$domain\username^";" ^
    "$credential = New-Object;" ^
    "System.Management.Automation.PSCredential($username,$password);" ^
    "Add-Computer -DomainName $domain -Credential $credential;" ^
    "Restart-Computer -Force"