Powershell 使用变量作为值
我有一个问题,因为我不能在PowerShell的哈希表上使用变量作为值 我有两个变量Powershell 使用变量作为值,powershell,variables,key,hashtable,Powershell,Variables,Key,Hashtable,我有一个问题,因为我不能在PowerShell的哈希表上使用变量作为值 我有两个变量 从AD获取UserPrincipalName并添加到$alias $alias = (Get-ADUser -Server "Add Server" -filter * -SearchBase "Add OU").userprincipalname 然后使用$alias我需要使用get mailbox和get MailboxStatistics以MB为单位获取邮箱配额,并获取一个百分比 $mailbox =
$alias
$alias = (Get-ADUser -Server "Add Server" -filter * -SearchBase "Add OU").userprincipalname
$alias
我需要使用get mailbox
和get MailboxStatistics
以MB为单位获取邮箱配额,并获取一个百分比
$mailbox = foreach ($user in $alias) {
($user | Get-MailboxStatistics |
Select-Object @{name="TotalItemSize (MB)"; expression={
[Math]::Round(($_.TotalItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)
}})."TotalItemSize (MB)"
}
- 使用此最大配额(MB上为100 GB)
- 获得%
$totalsize = foreach ($size in $mailbox) { (($size * 100) / $maxquota) }
$alias
值-占<代码>$总数的百分比 例如: David - 4.50 Juan - 15.00 Moises - 50 大卫-4.50 胡安-15.00 莫伊斯-50
如何像表一样获取所有值?您正在将
$Test
设置为哈希表数组。分配$Hashtable
,然后使用add
方法向其添加值:
Param (
$maxquota = 102400
)
$HashTable = @{}
$alias = (Get-ADUser -Server "Add Server" -filter * -SearchBase "Add OU").userprincipalname
$mailbox = Foreach ($user in $alias) {($user | Get-MailboxStatistics | Select-Object @{name="TotalItemSize (MB)"; expression={[math]::Round(($_.TotalItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}})."TotalItemSize (MB)"}
$totalsize = foreach ($size in $mailbox) {
(($size * 100) / $maxquota)
}
$test = Foreach($name in $alias){
$HashTable.Add($Name,$totalsize)
}
您正在将
$Test
设置为哈希表数组。分配$Hashtable
,然后使用add
方法向其添加值:
Param (
$maxquota = 102400
)
$HashTable = @{}
$alias = (Get-ADUser -Server "Add Server" -filter * -SearchBase "Add OU").userprincipalname
$mailbox = Foreach ($user in $alias) {($user | Get-MailboxStatistics | Select-Object @{name="TotalItemSize (MB)"; expression={[math]::Round(($_.TotalItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}})."TotalItemSize (MB)"}
$totalsize = foreach ($size in $mailbox) {
(($size * 100) / $maxquota)
}
$test = Foreach($name in $alias){
$HashTable.Add($Name,$totalsize)
}
步骤3中的代码不会创建哈希表,而是创建一个哈希表数组。而且,它不知道哪个邮箱大小属于哪个用户,因为在第2步之后,这些信息会丢失 像这样的东西可以满足您的需求:
$test = @{} # create new empty hashtable
foreach ($user in $alias) {
$size = Get-MailboxStatistics -Identity $user |
Select-Object @{n='TotalItemSize (MB)';e={...}} |
Select-Object -Expand 'TotalItemSize (MB)'
$test[$user] = ($size * 100) / $maxquota
}
步骤3中的代码不会创建哈希表,而是创建一个哈希表数组。而且,它不知道哪个邮箱大小属于哪个用户,因为在第2步之后,这些信息会丢失 像这样的东西可以满足您的需求:
$test = @{} # create new empty hashtable
foreach ($user in $alias) {
$size = Get-MailboxStatistics -Identity $user |
Select-Object @{n='TotalItemSize (MB)';e={...}} |
Select-Object -Expand 'TotalItemSize (MB)'
$test[$user] = ($size * 100) / $maxquota
}