使用 Read-Host 从脚本输出信息
Using Read-Host to output information from a script
我正在尝试 运行 一个针对交换的脚本,以恢复某个用户有权访问的所有邮箱。我希望能够使用 read-host
输入用户名。我目前有这个:
$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
然而,当我通过 powershell 运行 时,它要求输入用户名,看起来它正在开始 运行 脚本,然后 powershell 就退出并且没有数据输出
如有任何帮助,我们将不胜感激
问题是你只是输出到屏幕上。
这意味着当您 运行 您的脚本时,它将执行所需的操作,打印到屏幕并立即关闭 window。反过来,这意味着您看不到输出。
如@DarkLite1 所述,您可以输出到文件。
或者,您可以简单地让控制台在关闭前等待。这是在代码末尾这样完成的:
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
您可能还需要在代码段的最后一个操作上使用 Write-Host
,我不完全确定,因为我不熟悉 Get-Mailbox
的工作原理,但请先尝试一下。
总而言之,您必须保持 window 打开或将结果打印到文件才能真正看到任何内容。您当前拥有的代码将完成得如此之快,您将永远看不到任何输出。
感谢大家的帮助
我终于弄明白了,但有几个问题。这与结果大小有关。我添加了 -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 文件工作,因为这不是管理员 运行,它需要管理员权限才能输出到我想要的位置。一旦我使用管理员凭据通过 powershell.exe 为它创建了 运行 的快捷方式,它现在可以按预期工作了。
我正在尝试 运行 一个针对交换的脚本,以恢复某个用户有权访问的所有邮箱。我希望能够使用 read-host
输入用户名。我目前有这个:
$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
然而,当我通过 powershell 运行 时,它要求输入用户名,看起来它正在开始 运行 脚本,然后 powershell 就退出并且没有数据输出
如有任何帮助,我们将不胜感激
问题是你只是输出到屏幕上。
这意味着当您 运行 您的脚本时,它将执行所需的操作,打印到屏幕并立即关闭 window。反过来,这意味着您看不到输出。
如@DarkLite1 所述,您可以输出到文件。
或者,您可以简单地让控制台在关闭前等待。这是在代码末尾这样完成的:
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
您可能还需要在代码段的最后一个操作上使用 Write-Host
,我不完全确定,因为我不熟悉 Get-Mailbox
的工作原理,但请先尝试一下。
总而言之,您必须保持 window 打开或将结果打印到文件才能真正看到任何内容。您当前拥有的代码将完成得如此之快,您将永远看不到任何输出。
感谢大家的帮助
我终于弄明白了,但有几个问题。这与结果大小有关。我添加了 -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 文件工作,因为这不是管理员 运行,它需要管理员权限才能输出到我想要的位置。一旦我使用管理员凭据通过 powershell.exe 为它创建了 运行 的快捷方式,它现在可以按预期工作了。