Я взял какой-то код у кого-то, кто ушел, и мне интересно, что означает [0] в приведенном ниже коде, который написал предыдущий человек?что [0] делает в этом коде?
Я имею в виду, он писал:
$os = (Get-WmiObject -computername $hostfqdn -class Win32_OperatingSystem -credential $credential)
$ostitle = @($os)[0].Caption+" SP"[email protected]($os)[0].ServicePackMajorVersion+"."[email protected]($os)[0].ServicePackMinorVersion
Но, если я попытаюсь ниже я получить тот же результат, как если бы я добавить [0] в?
PS C:\> $os = (Get-WmiObject -computername SERVER-class Win32_OperatingSystem)
PS C:\> @($os)[0].Caption
Microsoft Windows Server 2008 R2 Enterprise
С [0]:
PS C:\> @($os).Caption
Microsoft Windows Server 2008 R2 Enterprise
Целая функция является:
function getoperatingsystem([string]$hostfqdn, [object]$credential, [int]$serverid)
{
try {
$os = (Get-WmiObject -computername $hostfqdn -class Win32_OperatingSystem -credential $credential)
$ostitle = @($os)[0].Caption+" SP"[email protected]($os)[0].ServicePackMajorVersion+"."[email protected]($os)[0].ServicePackMinorVersion
UpdateRecord "UPDATE t_server SET os='$ostitle' WHERE serverid=$serverid"
} catch [Exception] {
$errmsg = $error[0]
$currentuser = [Environment]::UserName
$datetimestamp = get-date
writelog "$datetimestamp,$currentuser,[getoperatingsystem],$hostfqdn,$errmsg"
$error.clear()
return $false
}
}
@() является массив, [0] получает вас элемент с индексом 0 в массиве таким образом, например, для массива '@ (1,2)' '$ (1,2) [0] '-> 1,' $ (1,2) [1] '-> 2, если ваш массив имеет только 1 элемент, он не имеет значения – Paul
Возможно, это индекс массива и обрабатывает случай, когда несколько операционные системы установлены на машине. –