我是学习Powershell的新手,遇到一个让我发疯的问题。我想编写一个简单的Powershell脚本,该脚本可用于获取某些ActiveDirectory用户的组成员身份以及某些ActiveDirectory组的用户,最后提供了在控制台上写入结果或保存结果的选项作为csv。 一切工作都很好,除非我做任何事情,否则在将结果写入控制台后,我无法阻止窗口立即关闭。我知道我可以通过命令行运行PS1,但不允许关闭窗口,但是我希望Powershell自己完成。
我尝试在查询脚本之后使用“暂停”和“读取主机”,但是无论结果在控制台上的顺序如何,停止事件总是在结果出现在控制台之前发生。我根本无法理解为什么这两个命令的执行顺序是向后的。您能否给我一些见解,为什么Powershell会这样做?
$nameofgroup = Read-Host -Prompt "`nPlease enter the name of the group!`n"
Get-ADGroupMember -identity $nameofgroup | Get-ADObject -Properties description, samAccountName | select @{n='Name'; e='name'}, @{n='Description'; e='description'}, @{n='Username'; e='samAccountName'}
$temp = Read-Host "Press Enter to continue..."
答案 0 :(得分:0)
因此,您需要显式告诉powershell输出字符串。我还为您添加了一些错误处理,因此您不必每次都运行脚本。就像是该组键入错误或不存在一样。
Do
{
$nameofgroup = Read-Host -Prompt "`nPlease enter the name of the group!`n"
try
{
Get-ADGroupMember -identity $nameofgroup | Get-ADObject -Properties description, samAccountName | select @{n='Name'; e='name'}, @{n='Description'; e='description'}, @{n='Username'; e='samAccountName'} | Out-String
$errorMessage = 'False'
Read-Host -Prompt 'Press Enter key to exit'
}
catch
{
Write-Host "Could not find group please try again"
$errorMessage = 'True'
}
}
while($errorMessage -eq 'True')