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