在foreach中写入数组的内容

时间:2015-12-08 07:59:07

标签: powershell

你想要达到的目标如下。我有这两行代码:

$array = Get-Content C:\Management\Users.txt
foreach ($arr in $array) {
  Get-MailboxFolderPermission -Identity $_":\Agenda"
}

这为Users.txt中的所有用户提供了一长串文件夹权限。但问题是,它没有显示它正在检索信息的用户。所以我希望$arr在执行Get-MailboxFolderPermission之前写在屏幕上。我做了很多尝试,其中一个应该说清楚我想要的是什么

foreach ($arr in $array) {
  Write-Host $arr , Get-MailboxFolderPermission -Identity $_":\Agenda"
}

但这不起作用。如何将$arr中的内容添加到屏幕上的输出中?

1 个答案:

答案 0 :(得分:3)

您当前的循环有两个问题:

Write-HostGet-MailboxFolderPermission应该是两个单独的语句,因此您需要使用分号;或换行符分隔它们,而不是,之后的Write-Host {1}}。

其次,当您使用foreach($arr in $array){ }时,您需要在循环体内引用$arr,而不是$_

foreach ($arr in $array) { 
    Write-Host $arr
    Get-MailboxFolderPermission -Identity $arr":\Agenda"
}

foreach ($arr in $array) { write-host $arr; Get-MailboxFolderPermission -Identity $arr":\Agenda"}

另一种方法是使用$arrSelect-Object值添加到每个邮箱文件夹权限对象:

foreach ($arr in $array) {
    Get-MailboxFolderPermission -Identity $arr":\Agenda" |
        Select-Object *,{ Name="Mailbox"; Expression={$arr} }
}