我已经研究了如何将多个命令与 psexec 结合使用,但似乎没有一种方法有效。也许是因为我在 PowerShell 而不是 cmd.exe 中运行脚本?
我需要创建用户帐户并将它们添加到非域计算机(Windows 2003)上的本地管理员组。我已经派生了以下脚本(有效),但我想知道是否有一种简单的方法可以组合两个 foreach 循环,因为它必须为每个服务器建立两次 psexec 连接。
$username = Read-Host "User name:"
$password = Read-Host "Password:"
$fullname = Read-Host "Full name:"
$computers = Get-Content C:\Tools\scripts\ServerList.txt
foreach ($computer in $computers) {
psexec \\$computer -u username -p password net user $username $password /add /fullname:""$fullname"" /comment:"Comment"
}
foreach ($computer in $computers) {
psexec \\$computer -u username -p password net localgroup Administrators $username /add
}
正如我所提到的,这是在 PowerShell 中运行的。我运行它的服务器是未安装 PowerShell 的 Workgroup Windows 2003 Servers。
正如@CIA 所说,您可以通过
psexec
在一个循环中运行两次来组合这些循环。但似乎您真正要问的是如何在单个会话中运行两个net 命令。
psexec
您可以尝试这种方式,但我不确定它是否会起作用。使用
&&
转义,^
以便将其传递给psexec
而不是在本地解释,然后在net
本地运行第二个命令。选择
相反,您可以做的是根本不使用
psexec
并使用 PowerShell 远程处理。只需在您要远程访问的每台机器上启用它。我意识到这可能是一项艰巨的任务,但它是值得的,因为它更加通用,而且基本上,这是未来。如果您在域中,您甚至可以使用组策略来启用 PowerShell 远程处理(完全披露:这是我的文章)。
如果这样做,您的代码将如下所示: