使用Read-Host从脚本输出信息

时间:2016-03-11 10:05:59

标签: powershell command exchange-server

我正在尝试针对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只退出并且没有输出数据

非常感谢任何帮助

2 个答案:

答案 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运行,它现在正在按预期工作。