在先前的技巧中我们使用Quser.exe查询到了本地电脑当前的登录用户,用下面这个函数也能获取远程电脑的当前登录用户,同时附加了它的计算机名,所以当你查询多台电脑时将知道结果从哪里来。
function Get-LoggedOnUser { param([String[]]$ComputerName = $env:COMPUTERNAME) $ComputerName | ForEach-Object { (quser /SERVER:$_) -replace '\s{2,}', ',' | ConvertFrom-CSV | Add-Member -MemberType NoteProperty -Name ComputerName -Value $_ -PassThru } }
下面一个简单的实例演示,查询本地系统和一台远程电脑:
原文地址:Finding Logged-On User on Remote Machine
本文链接: https://www.pstips.net/finding-on-user-on-remote-machine.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
Powershell 查看远程计算机已经登录的用户名:之前没仔细看,原来这个IDLE和Logon Time属性也很实用啊:USERNAME : mosserSESSIONNAME : rdp-tcp#0ID : 2STATE : ActiveIDLE TIME : 18LOGON TIME : 5/8/2014 2:14 PMComputerName : mosser-vm
之前费了好多功夫,原来就这么简单,居然自己都没注意。
同感,同感
我想在C#获取这个QUSER的值,但是一直获取不到。不知道什么原因。
照着http://www.pstips.net/convert-ps1toexe.html中的那个来写应当没问题的:将process的输出重定向。
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = false;
p.Start();
p.StandardInput.WriteLine(@"C:\Windows\System32\quser.exe");
p.StandardInput.WriteLine("exit");
//Console.WriteLine(p.StandardOutput.ReadToEnd());
Console.ReadKey();/code
一直提示:不是内部或外部命令,也不是可运行的程序或批处理文件
不需要cmd,quser本身就是可执行程序。
$pro=New-Object System.Diagnostics.Process
$pro.StartInfo.FileName="quser.exe"
$pro.StartInfo.RedirectStandardOutput=$true
$pro.StartInfo.UseShellExecute=$false
$pro.Start()
$pro.WaitForExit()