多行 Powershell .CMD 文件

Multi-Line Powershell .CMD file

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

您 bat/cmd 文件中的命令不会为您输入到 powershell 控制台中。 CMD 将启动 powershell 然后在 运行 执行下一个命令之前等待它退出,或者如您所描述的 'halts'.

使用您的脚本 运行ning powershell 运行s powershell 控制台(带有等待 user 输入的交互式提示) .它不会执行任何操作,因为您没有为它指定命令或文件 运行.

要使其成为 运行 您的命令,请将命令保存为 .ps1 文件,然后将 powershell 获取到 运行 该文件:

powershell -File C:\folder\script.ps1

编辑:

然而,您正在尝试重新发明轮子 unattended domain join is already part of the unattended answer file (see Windows System Image Manager),并且自 Windows 7.

以来一直可用

按照 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"