我对powershell很新,所以我会尽我所能解释我自己。我目前正在使用一个脚本,它为服务器上的所有用户和用户组创建一个访问级别的csv报告。在管理员和用户权限之间分解。现在,它目前为具有Admin和User访问权限的组提供了两个条目。类似于下面的图像。 (张贴的图像由于一些麻烦创建于计算器表)如果powershell存在重复项,则更改CSV报告条目
我希望有关如何巩固用户/组,其重复报告为一个条目,在一个X的一些建议两个领域。有点像下面:
这里是我当前的脚本:
[CmdletBinding()]
Param(
[Parameter( ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true
)]
[string[]]
$ComputerName = $env:ComputerName,
[Parameter()]
[array] $LocalGroupNames = @("Administrators", "Remote Desktop Users"),
[Parameter()]
[string]
$LocalGroupName,
[Parameter()]
[string]
$OutputDir = "c:\temp"
)
Begin {
$OutputFile = Join-Path $OutputDir "OSUsers $(get-date -f yyyy-MM-dd).csv"
Add-Content -Path $OutPutFile -Value "ServerName, User\Group, Administrator, User"
}
Process {
ForEach($Computer in $ComputerName) {
foreach ($LocalGroupName in $LocalGroupNames) {
Write-host "Working on $Computer"
If(!(Test-Connection -ComputerName $Computer -Count 1 -Quiet)) {
Add-Content -Path $OutputFile -Value "$Computer,Offline,Offline,Offline"
Continue
} else {
Write-Verbose "Working on $computer"
try {
$group = [ADSI]"WinNT://$Computer/$LocalGroupName"
$members = @($group.Invoke("Members"))
Write-Verbose "Successfully queries the members of $computer"
if(!$members) {
Add-Content -Path $OutputFile -Value "$Computer,NoMembersFound"
Write-Verbose "No members found in the group"
continue
}
}
catch {
Add-Content -Path $OutputFile -Value "$Computer,FailedToQuery"
Continue
}
foreach($member in $members) {
try {
$MemberName = $member.GetType().Invokemember("Name","GetProperty",$null,$member,$null)
$MemberType = $member.GetType().Invokemember("Class","GetProperty",$null,$member,$null)
$MemberPath = $member.GetType().Invokemember("ADSPath","GetProperty",$null,$member,$null)
$MemberDomain = $null
if($MemberPath -match "^Winnt\:\/\/(?<domainName>\S+)\/(?<CompName>\S+)\/") {
if($MemberType -eq "User") {
$MemberType = "LocalUser"
} elseif($MemberType -eq "Group"){
$MemberType = "LocalGroup"
}
$MemberDomain = $matches["CompName"]
} elseif($MemberPath -match "^WinNT\:\/\/(?<domainname>\S+)/") {
if($MemberType -eq "User") {
$MemberType = "DomainUser"
} elseif($MemberType -eq "Group"){
$MemberType = "DomainGroup"
}
$MemberDomain = $matches["domainname"]
} else {
$MemberType = "Unknown"
$MemberDomain = "Unknown"
}
if ($MemberType -ne "Unknown") ##Exclude unresolved users
{
if ($LocalGroupName -eq "Administrators")
{Add-Content -Path $OutPutFile -Value "$Computer, $MemberName, X, ,"}
if ($LocalGroupName -eq "Remote Desktop Users")
{Add-Content -Path $OutPutFile -Value "$Computer, $MemberName, , X,"}
}
} catch
{
Add-Content -Path $OutputFile -Value "$Computer, ,FailedQueryMember"
}
}
}
}
}
}
End {}
你试过问别人做你的工作,你做之前什么呢? – TheIncorrigible1
我已经做了相当多的搜索模块或功能,这将允许我这样做。我认为使用“-unique”可以工作,但我需要能够将“X”添加到用户/组,其中独特似乎只是删除重复的用户/组。 – Pat
我只是在寻找一个建议,让我指出正确的方向。我可以做我自己的工作。 :) – Pat