2017-01-10 4 views
2

Я хочу запросить время безотказной работы машины и решил попробовать это через powershell, но я изо всех сил стараюсь заставить его работать. Вот что я сделал до сих пор:Требуется выполнить запрос на удаленное управление ПК с помощью powershell

function Get-PCUptime { 

     param (
      [Parameter(ValueFromPipeline=$true)] 
      [String]$computer = (Read-Host "Enter a computer name") 
     ) 


     $lastboottime = (Get-WmiObject -Class Win32_OperatingSystem -Credential Administrator -comp $computer) 
     $sysuptime = (Get-Date) – [System.Management.ManagementDateTimeconverter]::ToDateTime($lastboottime.LastBootUpTime) 

     if ($lastboottime -ne $NULL){ 
      Write-Host “System($computer) is Uptime since : ” $sysuptime.days “days” $sysuptime.hours ` 
      “hours” $sysuptime.minutes “minutes” $sysuptime.seconds “seconds” -Foregroundcolor Gray; 
     } 
    } 

я не могу заставить его работать, как я хотел, чтобы преобразовать его в дни, часы, минуты и т.д.

Это я ошибка получить:

Exception вызова "ToDateTime" с "1" аргумент (ы): "Указанный аргумент был вне диапазона допустимых значений имя параметра:. dmtfDate"

ответ

3

Вы можете использовать метод ConvertToDateTime на Win32_OperatingSystem

function Get-PCUptime { 
    param (
     [Parameter(ValueFromPipeline=$true, 
        HelpMessage="Enter a Computer Name" 
     )] 
     [String]$computer 
    ) 

    $OS = (Get-WmiObject -Class Win32_OperatingSystem -Credential Administrator -comp $computer) 
    $sysuptime = (Get-Date) – ($OS.ConvertToDateTime($OS.LastBootUpTime)) 

    if ($OS -ne $NULL){ 
     Write-Host “System($computer) is Uptime since : ” $sysuptime.days “days” $sysuptime.hours ` 
     “hours” $sysuptime.minutes “minutes” $sysuptime.seconds “seconds” -Foregroundcolor Gray; 
    } 
} 
Смежные вопросы