查询用户登录是/否

时间:2018-12-13 17:42:06

标签: powershell

我有一个脚本,可以远程查询计算机的SMBIOSVersion,然后像这样输出OutputComputerName和SMBIOSVersion ...

ComputerName    SMBIOSBIOSVersion
------------    -----------------
SD010E7C6B28A08 P08 Ver. 02.18

我想在脚本中添加一部分,以查询机器以查看是否有人登录,然后以简单的“是”或“否”格式格式化输出。

ComputerName    SMBIOSBIOSVersion    UserLoggedOn
------------    -----------------    ------------
SD010E7C6B28A08 P08 Ver. 02.18       Yes

我已经尝试修改psloggedon.exe的输出以完成此任务,但到目前为止没有成功。

这是我到目前为止所拥有的:

function Get-SMBIOSVersion {
    [CmdletBinding()]
    Param(
        [Parameter()]
        [ValidateScript({Test-Connection -ComputerName $_ -Quiet -Count 1})]
        [ValidateNotNullOrEmpty()]
        [string[]]$ComputerName = $env:COMPUTERNAME
    )
    foreach ($comp in $ComputerName) {
        $output = @{ 'ComputerName' = $comp }
        $output.SMBIOSBIOSVersion = (Get-WmiObject Win32_Bios -ComputerName $comp).SMBIOSBIOSVersion
        [PSCustomObject]$output
    }
}

Write-Host "Please select the machine list"

function Get-FileName($InitialDirectory) {
    [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null

    $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
    $OpenFileDialog.InitialDirectory = $initialDirectory
    #$OpenFileDialog.Filter = "CSV (*.csv)| *.csv|TXT (*.txt)| *.txt"
    $OpenFileDialog.ShowDialog() | Out-Null
    $OpenFileDialog.Filename
}

$inputfile = Get-FileName "C:\temp\Scripts"
$ComputerList = get-content $inputfile
$ErrorActionPreference = "SilentlyContinue"
cd C:\PSTOOLS

foreach ($Computer in $ComputerList) {
    Get-SMBIOSVersion $Computer
}

2 个答案:

答案 0 :(得分:1)

您可以使用CIM / WMI来获取当前的 local 登录用户。它不显示远程用户,例如RDP内容。这样...

(Get-CimInstance -ClassName CIM_ComputerSystem -ComputerName 'LocalHost').UserName

如果可以的话,您可能希望通过WMI更改BIOS调用以使用CIM。 CIM调用速度更快……如果您需要访问日期时间信息,则使用日期时间而不是WMI文件时间。像这样的东西

(Get-CimInstance -ClassName CIM_BIOSElement -ComputerName 'LocalHost').SMBIOSBIOSVersion

答案 1 :(得分:0)

如果您想查看是否有人登录,请尝试使用此方法(它只是获取信息的一种方法)

DBBACKUP_FILENAME_TEMPLATE = '{databasename}-{servername}-{datetime}.sql'

$ ConsoleSession为true或False,您可以调整输出以获取所需的更多信息

相关问题