尝试构建自定义的Active目录管理工具,但在将其打包到菜单时遇到一些问题。
do
{
Show-Menu
$selection = Read-Host "Make your selection"
switch ($selection)
{
'1' { #===Add Admin===
Clear-Host
$Workstation = Read-Host "Workstation\IP Address"
$EndUser = Read-Host "EndUser"
$AdminGroup = [ADSI]"WinNT://$Workstation/Administrators,group"
$User = [ADSI]"WinNT://USA/$EndUser,user"
$AdminGroup.Add($User.Path)
} '2' { #===Remove Admin===
Clear-Host
$Workstation = Read-Host "Workstation\IP Address"
$EndUser = Read-Host "ACEID"
$AdminGroup = [ADSI]"WinNT://$Workstation/Administrators,group"
$User = [ADSI]"WinNT://USA/$EndUser,user"
$AdminGroup.remove($User.Path)
} '3' { #===ADUC===
Clear-Host
runas /netonly /user:USA\ADM$env:USERNAME "mmc C:\Windows\System32\dsa.msc"
} '4' { #===Computer Management===
Clear-Host
runas /netonly /user:USA\ADM$env:USERNAME "mmc C:\Windows\System32\compmgmt.msc"
} '5' {
Clear-Host
$EndUser = Read-Host "Username?"
(Get-ADUser $EndUser -Properties MemberOf).memberof | Get-ADGroup | Select-Object name | Where-Object {$_.Name -like "Shr*"}
pause
}
}
}
until ($selection -eq 'q')选项1-4按预期工作,但选项5没有输出任何内容。当我复制5的代码并在另一个PowerShell实例中单独执行它时,它会输出我想要的结果,但是尽管其他的代码工作得完美无缺,上面的结果还是不能工作。我是不是遗漏了什么?我确实复制和粘贴了代码,在一个实例中,它可以工作,但是只要我作为一个整体运行这个脚本,或者通过ISE,它就不会给我任何输出。
特别是
(Get-ADUser $EndUser -Properties MemberOf).memberof | Get-ADGroup | Select-Object name | Where-Object {$_.Name -like "Shr*"}当它被包装在菜单中时,它不起作用,但是如果我在powershell中运行它,并为$EndUser变量输入用户名,它就会给出预期的结果。
发布于 2022-10-14 16:13:35
我试着按照建议将写主机添加到开头,但它只输出第一个字符串的代码。然后,我在代码周围添加了括号,这样写主机就可以将其全部作为目标,但这也没有输出我想要的结果。
Write-Host ((Get-ADUser $EndUser -Properties MemberOf).memberof | Get-ADGroup | Select-Object name | Where-Object {$_.Name -like "Shr*"})这将输出信息,但格式如下:
@{name=shr_Share1} @{name=shr_Share2} @{name=shr_Share3}
进步,但不完全正确。我希望能够轻松地复制和粘贴输出的信息。
在字符串的末尾添加一张“表”给了我我想要的:
(Get-ADUser $EndUser -Properties MemberOf).memberof | Get-ADGroup | Select-Object name | Where-Object {$_.Name -like "Shr*"} | Format-Table名称
-
shr_Share1
shr_Share2
shr_Share3
https://stackoverflow.com/questions/74070922
复制相似问题