我正在尝试针对Exchange运行脚本以恢复某个用户有权访问的所有邮箱。我希望能够使用$username = Read-Host("Please enter users username")
#Enable Exchange cmdlets
add-pssnapin *exchange* -erroraction SilentlyContinue
Get-MailBox | Get-MailboxPermission -User $username | FL > C:\MailboxPermissions.txt
输入用户名。我目前有这个:
IEnumerable<Courses> courseHallam = _HallamService.GetHallamUniCourses();
然而,当我通过powershell运行它时,它会询问用户名,看起来它开始运行脚本,然后powershell只退出并且没有输出数据
非常感谢任何帮助
答案 0 :(得分:0)
问题是你只是放在屏幕上。
这意味着当您运行脚本时,它将执行所需的操作,打印到屏幕并立即关闭窗口。反过来,这意味着您无法看到输出。
如同@ DarkLite1所述,您可以输出到文件。
或者,您可以简单地让控制台在关闭之前等待。在代码末尾这样做:
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
您的代码段中的最后一个操作可能还需要Write-Host
,我不完全确定,因为我不熟悉Get-Mailbox
的工作原理,但是先试用它。
总而言之,您必须保持窗口打开或将结果打印到文件以实际查看任何内容。您目前所拥有的代码将如此快速地完成,您将永远不会看到任何输出。
答案 1 :(得分:0)
感谢所有帮助
我终于想通了,有几个问题。这与结果大小有关。我添加了-resultsize unlimited
:
$username = Read-Host("Please enter users username")
add-pssnapin *exchange* -erroraction SilentlyContinue
>Get-MailBox -resultsize unlimited | Get-MailboxPermission -User $username | FL > C:\MailboxPermissions.txt
它也无法运行.ps1文件,因为它不是由admin运行的,它需要管理员权限才能输出到我想要的位置。一旦我创建了一个快捷方式,它通过使用管理员凭据的powershell.exe运行,它现在正在按预期工作。