【发布时间】:2020-11-23 14:55:54
【问题描述】:
基本上,这段代码应该通过一个服务器列表,并为每个服务器运行 3 个函数。一种用于列出本地用户,一种用于管理员,一种用于列出 RDP 用户。该脚本似乎单独运行良好,但是当我将它们全部加在一起时,前两个给了我结果,而不是预期的结果。任何想法都会很时髦。我在最后列出了每个函数的内容。
$ServerList = Get-Content "ServerList.txt"
foreach ($i in $ServerList){
write-host (" ",$i)
write-host "
Local Users
"
get-local $i
write-host "
Administrator Users
"
get-localadmin $i
write-host "
RDP Users
"
get-rdp $i
}
write-host " COMPLETED"
function get-local {
param ($strcomputer)
$admins = Gwmi win32_groupuser –computer $strcomputer
$admins = $admins |? {$_.groupcomponent –like '*"users"'}
$admins |% {
$_.partcomponent –match “.+Domain\=(.+)\,Name\=(.+)$” > $nul
$matches[1].trim('"') + “\” + $matches[2].trim('"')
}
}
function get-localadmin {
param ($strcomputer)
$admins = Gwmi win32_groupuser –computer $strcomputer
$admins = $admins |? {$_.groupcomponent –like '*"Administrators"'}
$admins |% {
$_.partcomponent –match “.+Domain\=(.+)\,Name\=(.+)$” > $nul
$matches[1].trim('"') + “\” + $matches[2].trim('"')
}
}
function get-rdp {
param ($strcomputer)
$admins = Gwmi win32_groupuser –computer $strcomputer
$admins = $admins |? {$_.groupcomponent –like '*"Remote Desktop Users"'}
$admins |% {
$_.partcomponent –match “.+Domain\=(.+)\,Name\=(.+)$” > $nul
$matches[1].trim('"') + “\” + $matches[2].trim('"')
}
}
【问题讨论】:
标签: function powershell foreach