我需要我希望在Powershell中执行此操作的一种非常简单的方法(我使用Absolute Manage远程运行Powershell脚本):
if ( computer is logged out )
{
<run script>
}
else
{
exit
}
我在搜索时发现的大部分内容都围绕着与用户登录/注销相关的更复杂的事情。我基本上只需要知道计算机当前是否处于登录提示位置。
感谢您提供的任何帮助 - 你们真棒。
答案 0 :(得分:0)
根据您的环境,这可能是一个雷区,如下所述:
总之,使用SysInternals Suite提供的PSLoggedOn工具,同时小心过滤掉可能返回的任何服务帐户。为了防止链接腐烂,请参阅上面的脚本专家文章中的使用示例:
$Computers = @(
, "PC001"
, "PC002"
, "PC003"
, "PC004"
)
Foreach ($Computer in $Computers)
{
[object[]]$sessions = Invoke-Expression ".\PsLoggedon.exe -x -l \\$Computer" |
Where-Object {$_ -match '^\s{2,}((?<domain>\w+)\\(?<user>\S+))|(?<user>\S+)'} |
Select-Object @{
Name='Computer'
Expression={$Computer}
},
@{
Name='Domain'
Expression={$matches.Domain}
},
@{
Name='User'
Expression={$Matches.User}
}
IF ($Sessions.count -ge 1)
{
Write-Host ("{0} Users Logged into {1}" –f $Sessions.count,
$Computer) -ForegroundColor 'Red'
}
Else
{
Write-Host ("{0} can be rebooted!" -f $Computer) `
-ForegroundColor 'Green'
}
}
答案 1 :(得分:0)
如上所述here,您可以使用下面的代码段来获取所有登录用户。请注意,这将包含SYSTEM,LOCAL SERVICE和NETWORK SERVICE等用户。
Get-WmiObject Win32_LoggedOnUser -ComputerName "myMachine" |
Select Antecedent -Unique |
% {
"{0}\{1}" -f $_.Antecedent.Split('"')[1], $_.Antecedent.Split('"')[3]
}
如果您只想查看特定域中的人,可以稍微修改一下:
Get-WmiObject Win32_LoggedOnUser -ComputerName "myMachine" |
Select Antecedent -Unique |
% {
$domain = $_.Antecedent.Split('"')[1]
if($domain -eq "myDomain") {
"{0}\{1}" -f $domain, $_.Antecedent.Split('"')[3]
}
}
答案 2 :(得分:0)
尽可能使用WMI:
$info = gwmi -class win32_computerSystem -computer sist002ws -ea silentlycontinue | Select-Object username
if ($info.username.Length -gt 0)
{$Message = $info.username}
else
{ $Message = "No user is logged in locally"}
$message
答案 3 :(得分:0)
这将使您在登录用户时获得所有Interactive / RemoteInteractive(终端服务会话)。您可能希望向过滤器添加更多LogonType。没有结果意味着没有人登录。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394189(v=vs.85).aspx
Get-WmiObject Win32_LogonSession -ComputerName Server1 -Filter 'LogonType=2 OR LogonType=10' |
Foreach-Object { $_.GetRelated('Win32_UserAccount') } |
Select-Object Caption -Unique