无法通过管道将 cmdlet 传递给另一个?
Unable to pipe and pass through cmdlets to another?
下面的脚本用于收集 Exchange Online 的邮箱大小。
$Mailboxes = @('User1.name@domain.co.uk', 'user2.name@company.com') + GetEXOMailbox | Where-Object {$_.Name -like '*User*'}
$folderAndSubfolderSize = @{n='FolderAndSubfolderSize'; e={[math]::Round(($_.FolderAndSubfolderSize.Replace(',', '') -replace '.*?\((\d+)\s+bytes\)', '') / 1MB, 1)}}
$DisplayName = @{n='Display Name'; e='Identity'}
$Mailboxes | Get-EXOMailbox | Select-Object -ExpandProperty Name | ForEach-Object {
Write-Host "Processing $_ ..." -ForegroundColor Yellow
Get-EXOMailboxFolderStatistics -Identity $_ |
Where-Object {$_.Name -like "Top of Information Store"} |
Select-Object -Property $DisplayName, $folderAndSubfolderSize, ItemsInFolderAndSubfolders |
Where-Object {$_.FolderAndSubfolderSize -gt 1 }
} | Out-GridView
但是,下面的错误导致结果无法正常显示。
Get-EXOMailboxFolderStatistics : Identity is a mandatory value to provide for running Get-ExoMailboxFolderStatistics. You can specify identity by using either of the following
Identity, ExternalDirectoryObjectId, UserPrincipalName.
At line:6 char:2
+ Get-EXOMailboxFolderStatistics $_.Name |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ProtocolError: (:) [Get-EXOMailboxFolderStatistics], RestClientException
+ FullyQualifiedErrorId : Identity is a mandatory value to provide for running Get-ExoMailboxFolderStatistics. You can specify identity by using either of the following
Identity, ExternalDirectoryObjectId, UserPrincipalName.
,Microsoft.Exchange.Management.RestApiClient.GetExoMailboxFolderStatistics
我想知道如何解决这个问题?
Get-EXOMailboxFolderStatistics每个参数的文档说明每个参数的位置是Named
。因此,您必须使用 -Parameter Value
将值绑定到参数。
Get-EXOMailboxFolderStatistcs -Identity $_.UserPrincipalName
您尝试的内容取决于 -identity
参数的数字位置。默认情况下,函数按照声明的顺序启用位置参数。您可以使用 CmdletBinding
属性的 PositionalBinding
参数明确禁用位置。您还可以使用 Parameter
属性设置位置。参见 Advanced Parameters。
下面的脚本用于收集 Exchange Online 的邮箱大小。
$Mailboxes = @('User1.name@domain.co.uk', 'user2.name@company.com') + GetEXOMailbox | Where-Object {$_.Name -like '*User*'}
$folderAndSubfolderSize = @{n='FolderAndSubfolderSize'; e={[math]::Round(($_.FolderAndSubfolderSize.Replace(',', '') -replace '.*?\((\d+)\s+bytes\)', '') / 1MB, 1)}}
$DisplayName = @{n='Display Name'; e='Identity'}
$Mailboxes | Get-EXOMailbox | Select-Object -ExpandProperty Name | ForEach-Object {
Write-Host "Processing $_ ..." -ForegroundColor Yellow
Get-EXOMailboxFolderStatistics -Identity $_ |
Where-Object {$_.Name -like "Top of Information Store"} |
Select-Object -Property $DisplayName, $folderAndSubfolderSize, ItemsInFolderAndSubfolders |
Where-Object {$_.FolderAndSubfolderSize -gt 1 }
} | Out-GridView
但是,下面的错误导致结果无法正常显示。
Get-EXOMailboxFolderStatistics : Identity is a mandatory value to provide for running Get-ExoMailboxFolderStatistics. You can specify identity by using either of the following
Identity, ExternalDirectoryObjectId, UserPrincipalName.
At line:6 char:2
+ Get-EXOMailboxFolderStatistics $_.Name |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ProtocolError: (:) [Get-EXOMailboxFolderStatistics], RestClientException
+ FullyQualifiedErrorId : Identity is a mandatory value to provide for running Get-ExoMailboxFolderStatistics. You can specify identity by using either of the following
Identity, ExternalDirectoryObjectId, UserPrincipalName.
,Microsoft.Exchange.Management.RestApiClient.GetExoMailboxFolderStatistics
我想知道如何解决这个问题?
Get-EXOMailboxFolderStatistics每个参数的文档说明每个参数的位置是Named
。因此,您必须使用 -Parameter Value
将值绑定到参数。
Get-EXOMailboxFolderStatistcs -Identity $_.UserPrincipalName
您尝试的内容取决于 -identity
参数的数字位置。默认情况下,函数按照声明的顺序启用位置参数。您可以使用 CmdletBinding
属性的 PositionalBinding
参数明确禁用位置。您还可以使用 Parameter
属性设置位置。参见 Advanced Parameters。