2014-06-20 110 views
2

嗨,我正在編寫一個PS腳本,使cofront郵箱大小達到極限,並在超出此限制時向用戶發送電子郵件。Powershell:將TotalItemSize轉換爲INT

我準備這樣的尺寸變量:

$Size=Get-MailboxStatistics -Identity $_.samaccountname | Select-Object @{n="TotalItemSize";e={($_.totalitemsize -split " \(")[0]}} 

和我得到的東西,如:

"samaccountname" @{TotalItemSize=1.991 GB} 

我有2個問題:

  1. 是否有可能得到擺脫除1.991 GB之外的所有內容?
  2. 我可以將此值轉換爲INT嗎?

在此先感謝。

回答

0

您可以通過鑄造它作爲一個[int64]轉換小數(使用四捨五入)爲int:

[int64]$val = 1.991 

或者,如果你想四捨五入您可以使用[math

[math]::floor(1.991) 
1

這將讓你的大小爲int:

$Size= 
Get-MailboxStatistics -Identity $_.samaccountname | 
Select-Object -ExpandProperty totalitemsize 

$Size = $Size -replace '^.+\((.+\))','$1' -replace '\D' -as [int] 

我會使用它,然後除以1GB,如果你想要一個int GB值。尺寸較小的郵箱可能會返回MB或甚至KB。從實際字節數開始並自己進行轉換比分析可能返回的所有可能的字符串格式要容易得多。

但是,如果您在郵箱上設置了IssueWarningQuota,系統將在每天超過該配額時自動開始向其發送一封電子郵件。

編輯:也有對象方法可用於獲取各種格式的字節數(如ToBytes())。只要您處於實際的EMS外殼中,這些工作就可以正常工作。如果您嘗試在隱式遠程會話中使用相同的腳本,它將失敗,因爲現在您正在使用反序列化的對象,並且您不再有這些方法。字符串解析方法並不像使用對象方法那樣「純粹」,但它在這些環境之間是可移植的。

+0

您的解決方案並沒有爲我工作,我用: $大小=的Int64]($大小-replace「或者直接回答解決方案:$ Size = Get-MailboxStatistics -Identity $ _。。samaccountname | Select-Object @ {($ \','$ 1')+ $','$ 1') n =「TotalItemSizeGB」; e = {[int64]($ _。totalitemsize.value -replace'^。+ \(([\ d \,] +)。+ $','$ 1')/ 1GB} – Neossian

2

,看一下$a

$a = (Get-MailboxStatistics -Identity jean-paul.blanc).TotalItemSize 

$a | get-member 

你可以看到它包含的屬性值是Microsoft.Exchange.Data.ByteQuantifiedSize

現在,看一下Microsoft documentation,你可以找到你正在尋找Tobytes()方法所以你可以寫:

$a.value.ToBytes() 

或在你的情況:

$size = (Get-MailboxStatistics -Identity "Your user identity").TotalItemSize.value.Tobytes() 

編輯:

如果只已經得到了串讓說:「34。01 MB(35666338個字節)」

可以使用rebuid localy對象:

$a = [Microsoft.Exchange.Data.ByteQuantifiedSize]::parse("34.01 MB (35,666,338 bytes)") 
+1

他們在文檔中並沒有告訴你,這隻能在EMS shell中工作,如果你在一個隱含的遠程會話中嘗試它,或者你對Exchange管理器使用invoke-command ent session會失敗,因爲你找回反序列化的對象,並且所有的方法都被剝離掉了。 – mjolinor

+0

對不起,但我在這個問題中看不到有關遠程處理或調用命令的任何信息。 – JPBlanc

+1

我沒有看到任何說它運行在和EMS外殼。 Invoke-Command沒有被使用,但是發佈的腳本可以很容易地在隱式遠程會話中作爲EMS shell運行,並且這些類型的腳本傾向於按計劃的任務運行。在該環境中,隱式遠程處理經常用於避免必須在服務器上安裝Exchange管理工具,並使其更新以匹配Exchange服務器修補程序級別。 – mjolinor