Powershell和PSExec

时间:2015-06-18 16:33:19

标签: powershell psexec

我发现我在工作中一直使用psexec远程进行质量变化。当我在powershell中运行PSEXEC时,我在连接到的每台计算机上收到以下消息:

代码:

foreach($computer in $computers) {
        psexec -i \\$computer net localgroup "Administrators" "ITLOCALADMIN" /add
}

以下是结果:

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
System error 1378 has occurred.
The specified account name is already a member of the group.
Connecting to {COMPNAME}...Starting PSEXESVC service on {COMPNAME}...Connecting with PsExec service on {COMPNAME}...Starting net on {COMPNAME}...
net exited on {COMPNAME}with error code 2.
psexec : 
At G:\Users\ariggs\Documents\WindowsPowerShell\Scripts\AddItlocaladmin.ps1:3 char:9
+         psexec \\$computer net localgroup "Administrators" "ITLOCALAD ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

是否有可能将这些消息关闭,我所看到的只是命令的输出或错误?它很难看出是否存在问题,或者它是否适用于所有这些文本。

1 个答案:

答案 0 :(得分:1)

好吧我已经想出了答案,所以你要做的就是在结尾添加一个空输出,这样你的代码行就会是这样的,

psexec -i \\$Computer net localgroup "Administrators" "ITLOCALADMIN" /add > $null 2>&1

现在这将重定向所有输出,现在你还想添加某种日志记录,所以我建议将它放入Try,Catch或者只是在你的foreach末尾添加一行来写入你已经完成了计算机,

Write-host "Computer $Computer is now done" 

现在你需要更加相信你的脚本,但这是一个选择。