2014-12-02 3 views
1

Я взял какой-то код у кого-то, кто ушел, и мне интересно, что означает [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] получает вас элемент с индексом 0 в массиве таким образом, например, для массива '@ (1,2)' '$ (1,2) [0] '-> 1,' $ (1,2) [1] '-> 2, если ваш массив имеет только 1 элемент, он не имеет значения – Paul

+0

Возможно, это индекс массива и обрабатывает случай, когда несколько операционные системы установлены на машине. –

ответ

3

@($os)[0] означает, что он создает массив на лету, с одним элементом, и он доступ к первому элементу массива с помощью [0] (его индекс в массиве).

Он должен просто использовал $os

+0

Да, подумал об этом, но этот конкретный WMI запрашивает ОС, работающую в конкретной системе. –

+0

true для этого конкретного случая – Paul

+0

благодарит Микки за это. – lara400

Смежные вопросы