Пользователь запроса вошел в систему Да / Нет - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть скрипт, который может удаленно запрашивать у компьютеров их SMBIOSVersion, а затем выводить ComputerName и 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 голосов
/ 13 декабря 2018

вы можете использовать CIM / WMI для получения текущего локально зарегистрированного пользователя.он не показывает удаленных пользователей, таких как RDP.как это ...

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

если вы можете, вы можете изменить вызов BIOS через WMI для использования CIM.вызовы CIM несколько быстрее ... и если вам нужен доступ к информации о времени и дате, они используют дату и время вместо файлового времени WMI.как то так ...

(Get-CimInstance -ClassName CIM_BIOSElement -ComputerName 'LocalHost').SMBIOSBIOSVersion
0 голосов
/ 13 декабря 2018

если вы хотите увидеть, если кто-то вошел в систему, попробуйте с этим [это просто идея, как получить информацию]

qwinsta /Server:$server | ? -f {if ($_ -like "*Console*") {$ConsoleSession= $true}} 
$ConsoleSession 

$ ConsoleSession будет true или False, вы можете настроить вывод для получения дополнительной информации, которую выхочу иметь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...