2017-04-08 86 views
1

我正在創建一個菜單,並有一個選項顯示計算機名稱和操作系統版本以及顯示磁盤空間的選項。我需要在本地或遠程機器上完成選項。它的工作原理在本地機器上,但我不知道如何讓期權遠程機器顯示免費的文件夾空間

'1' { 
     cls 
       Write-Host -NoNewLine "OS Version: " 

    Get-CimInstance Win32_OperatingSystem | Select-Object Caption | ForEach{ $_.Caption } 

    Write-Host "" 
    Write-Host -NoNewLine "Computer Name: " 

    Get-CimInstance Win32_OperatingSystem | Select-Object CSName | ForEach{ $_.CSName } 

    Write-Host "" 
      } '2' { 
       cls 
        gwmi win32_logicaldisk | Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}} 

回答

0

上既然你已經提到它在當地的工作要做,我不碰的那部分。只需將整個代碼作爲函數$計算機名稱作爲參數打包。

如果您位於域管理員或者您沒有任何權限問題,那麼使用相同憑據您可以遠程獲取信息。

使用這樣:

function Get-DiskInfo($drive,$computername) 
{ 

##-- Local system Validation 
    if((gwmi win32_computersystem).Name -eq $computername) 
    { 
     $diskReport = Get-WmiObject Win32_logicaldisk 
     $drive = $diskReport | Where-Object { $_.DeviceID -eq $drive} 

     $result = @{ 
      Size = $drive.Size 
      FreeSpace = $drive.Freespace 
     } 
     return $result 
    } 
    else 
    { 

      $diskReport = Get-WmiObject Win32_logicaldisk -ComputerName $ComputerName 
      $drive = $diskReport | Where-Object { $_.DeviceID -eq $drive} 

      $result = @{ 
      Size = $drive.Size 
      FreeSpace = $drive.Freespace 
      } 
      return $result 

    } 



} 

調用該函數:

Get-DiskInfo C: localhost 

由於您使用的所有WMI調用,你不需要使用調用命令。 您可以直接使用目前在-ComputerName開關獲得-WmiObject可以遠程獲取所有的細節,你也可以通過特定的憑據-credential

希望它可以幫助你理解的邏輯。