从Python脚本(subprocess.Popen
调用Powershell时,我正在遍历AD域控制器的列表。对于每个无法识别AD对象的控制器,我想抑制错误的输出。
在Powershell命令末尾使用| Out-Null
无效。
Python脚本:
for server in ADDomainList:
cmd = 'powershell.exe get-ADComputer ' + hname + ' -Server ' + server + ' | Out-Null'
subprocess.call(cmd)
从Powershell命令行:
get-ADComputer computer-name -Server server.domain.com
不需要的输出:
Get-ADComputer : A positional parameter cannot be found that accepts argument '?'.
At line:1 char:1
+ get-ADComputer computer-name -Server server.domain.com ?
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-ADComputer], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.GetADComputer
返回代码0或1的结果是我接下来的执行步骤所需要捕获的全部。我不希望任何输出到控制台。
答案 0 :(得分:0)
像*> $null
一样将所有流重定向为null。这将导致没有输出。
cmd = 'powershell.exe get-ADComputer ' + hname + ' -Server ' + server + ' *> $null'
如果您希望通过管道传输到Out-Null
或任何其他cmdlet,还可以将所有输出重定向到成功流,并通过管道传输到另一个cmdlet,如下所示:
cmd = 'powershell.exe get-ADComputer ' + hname + ' -Server ' + server + ' *>&1 | Out-Null'
Here is some more information about redirection in Powershell.
答案 1 :(得分:0)
这是另一个利用PowerShell的解决方案 “试一试”功能。通过循环使用此错误 消除了响应。
我使用PowerShell尝试捕获所需的服务器
async
一旦我拥有正确的服务器,我就使用'|消灭掉 默认的PowerShell输出。
Future<int> f1() async => 1;
Future<int> f1() => Future.value(1);
Future<void> f2() async {
throw Error();
}
Future<void> f2() {
return Future.error(Error());
}