2015-01-27 48 views
0

所有,我想知道什麼是錯的,以下。 我不感興趣,輸出到HTML或改變輸出格式另一個服務器低驅動器空間腳本。不感興趣的輸出到HTML或更改輸出格式

$servers = Get-Content "c:\x\servers.txt"; 
$File = "C:\x\serverslowdrivespace.txt" 
$datetime = Get-Date -Format "MM-dd-yyyy_HH:mm"; 
Write-Host $datetime 
$datetime | Out-File $File 
"`n" | Out-File $File -Append 
foreach ($server in $servers) 
{ 
#Write-Host $server 
$server | Out-File $File -Append 
Get-WmiObject -query "SELECT * from Win32_logicaldisk WHERE DriveType ='3' 
-AND (($_.freespace/$_.Size)*100) -le 10)" | Format-Table DeviceID, @{ Name 
= "Size(GB)" ; Expression = { [decimal] ("{0:N0}" -f ($_.size/
1gb)) } }, @{ Name = "Free Space(GB)" ; Expression = { [decimal] 
("{0:N0}" -f ($_.freespace/1gb)) } }, @{ Name = "Free (%)" ; Expression 
= { "{0,6:P0}" -f (($_.freespace/1gb)/($_.size/1gb)) } } -AutoSize 
| Out-File $File -Append 
} 
+2

它有什麼問題嗎?它不起作用嗎? –

+0

Powershell v 2.0。它說這是一個無效的查詢 – Oscar

+0

是什麼? 'GET-WmiObject'?你可以手動運行該查詢嗎?另外我也沒有看到你在哪裏對遠程服務器運行查詢。我錯過了嗎? –

回答

0

我覺得你在這一點上都遇到的問題是,你正在使用$驅動器,但$驅動從未定義,因爲它只是沒有按」這樣工作。我不知道如何使WMI查詢包含計算結果作爲其WHERE子句的一部分。相反,我建議你做的是將所有drivetype ='3'驅動器管到PowerShell中的Where子句。這樣你可以將它過濾到只有低可用空間的驅動器。在下面的建議中,我使用在Format-Table選項中創建的計算屬性創建自定義對象,只是爲了保持乾淨。如果您遇到問題,請嘗試刪除管道後面的換行符,但我不知道PSv2是否友好。

$servers = Get-Content "c:\x\servers.txt" 
$File = "C:\x\serverslowdrivespace.txt" 
$datetime = Get-Date -Format "MM-dd-yyyy_HH:mm" 
Write-Host $datetime 
$datetime | Out-File $File 
"`n" | Out-File $File -Append 
foreach ($server in $servers) 
{ 
    $server | Out-File $File -Append 

    Get-WmiObject -ComputerName $server -query "SELECT * from Win32_logicaldisk WHERE DriveType ='3'" | #Query server for hard drives 
     Where{(($_.freespace/$_.Size)*100) -lt 10} | #Filter for drives with less than 10% free space 
     ForEach{New-Object PSObject -Property @{ 
      "DeviceID" = $_.DeviceID 
      "Size(GB)" = [decimal] ("{0:N0}" -f ($_.size/1gb)) 
      "Free Space(GB)" = [decimal] ("{0:N0}" -f ($_.freespace/1gb)) 
      "Free (%)" = "{0,6:P0}" -f (($_.freespace/1gb)/($_.size/1gb)) 
      } 
     } | 
     Format-Table -AutoSize | Out-File $File -Append 
}