Como o @CIA disse, você pode combinar os loops executando apenas psexec
duas vezes em um loop.
$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"
psexec \$computer -u username -p password net localgroup Administrators
}
Mas parece que o que você está realmente perguntando é como executar os net commands em uma única psexec
sessão.
$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 ullname"" /comment:"Comment" ^&^& net localgroup Administrators
}
Você pode tentar desta forma, mas não tenho certeza se funcionará. O &&
é escapado usando ^
para que seja passado para psexec
em vez de ser interpretado localmente, o que teria então executado o segundo comando net
localmente.
Alternativa
O que você poderia fazer em vez disso não é usar psexec
e usar o controle remoto do PowerShell. Ele só precisa ser ativado em cada máquina na qual você deseja se conectar. Eu sei que isso pode ser um pouco complicado, mas valerá a pena, já que é muito mais versátil e, basicamente, é o futuro.
Se você estiver em um domínio, poderá até mesmo usar a Política de grupo para ativar o recurso de comunicação remota do PowerShell (divulgação completa: este é o meu artigo).
Se você fez isso, seu código ficaria assim:
$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) {
Invoke-Command -ComputerName $computer -ArgumentList $username,$password,$fullname -ScriptBlock { param($u,$p,$f)
# Everything in here is executed on the remote computer
net user $u $p /add /fullname:""$f"" /comment:"Comment"
net localgroup Administrators
}
}