我正在尝试创建一个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
答案 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"