我有一个脚本,可以远程查询计算机的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
}
答案 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,您可以调整输出以获取所需的更多信息