Powershell 获取AdUser无选择变量
我正试图找出所有关于我的域管理员的信息Powershell 获取AdUser无选择变量,powershell,Powershell,我正试图找出所有关于我的域管理员的信息 #set domains we are going to query $domains = 'mydomainname.com' #首先,我带来了山姆账户的名字 Foreach ($domain in $domains) { $OUTPUT =Get-AdGroupMember -identity “Domain Admins” -recursive -server $domain |
#set domains we are going to query
$domains = 'mydomainname.com'
#首先,我带来了山姆账户的名字
Foreach ($domain in $domains)
{
$OUTPUT =Get-AdGroupMember -identity “Domain Admins” -recursive -server $domain |
Select-Object -Property samAccountName|
Select samAccountName;
$Outputs +=$OUTPUT;
$OUTPUT |Export-CSV "C:\File\$($domain).csv" -NoTypeInformation ;
}
$OUTPUT #this print the sam accounts
#here is the problem
Foreach ($user in $OUTPUT)
{
$Users2 =Get-ADUser -Filter "SamAccountName -like '$OUTPUT'" -Properties *
$USER3 +=$Users2;
$Users2 |Export-CSV "C:\File\$($domain)Userpop.csv" -NoTypeInformation ;
}
我认为这是你的过滤器的问题。尝试按如下方式更改该行:
Get-ADUser -Filter " SamAccountName -like `"$($user.samaccountname)`" " -Properties *
它不能是$OUTPUT
,因为这是一个数组。循环变量是$user
,它是一个对象,因此需要.samaccountname
属性。过滤器需要一个字符串,其-like
与带引号的字符串相匹配,因此需要``将引号传递给最后一个字符串
您的$user2
的CSV输出可能不是您所期望的,因为每个对象都输出到同一个文件中。您的意思可能是有一个-附加
或将它们写入不同的文件
您可能还需要重置
$user3
。可能需要在该循环之前添加$user3=@()
。我认为这是您的筛选器存在问题。请尝试按如下方式更改该行:
Get-ADUser -Filter " SamAccountName -like `"$($user.samaccountname)`" " -Properties *
它不能是$OUTPUT
,因为这是一个数组。您的循环变量是$user
,这是一个对象,因此您需要.samaccountname
属性。筛选器需要一个与带引号的字符串相匹配的-like
,因此您需要`将引号传递到最终字符串
您的$user2
的CSV输出可能不是您所期望的,因为每个对象都输出到同一个文件中。也许你的意思是要有一个-附加,或者将它们写入不同的文件
您可能还需要重置$user3
。可能在循环之前添加$user3=@()
。您应该始终避免向带有$array+=$something
的数组中添加内容,因为这意味着整个数组将在内存中重建,这将耗费时间和资源
另外,我建议使用更具描述性的变量名,这样代码在一段时间后仍然可以理解
然后,因为您从不同的域获取信息,所以在第一个循环中将域名与samaccount名称一起存储是很重要的,这样您就可以将它们用作-Server
上第二个循环的Get ADUser
参数
试一试
您应该始终避免向带有$array+=$something
的数组中添加,因为这意味着整个数组将在内存中重建,这将耗费时间和资源
另外,我建议使用更具描述性的变量名,这样代码在一段时间后仍然可以理解
然后,因为您从不同的域获取信息,所以在第一个循环中将域名与samaccount名称一起存储是很重要的,这样您就可以将它们用作-Server
上第二个循环的Get ADUser
参数
试一试
所以你的问题是什么?有什么问题?错误在哪里?什么东西没有按预期工作。。。细节。。。嗨,欢迎Mariano。我在这里看到了一个非常好的尝试,但仍然需要在一些基础上做一些工作。在这里查看您的数据是如何流动的。在第一个ForEach循环中,将数据分配给变量$OUTPUT。每次循环运行$OUTPUT时,都会被新数据覆盖。看起来您试图通过捕获$Outputs来解决这个问题,这很好,但仍然存在一些问题。稍后,您将有另一个foreach循环,它尝试使用$OUTPUT而不是$Outputs$输出将仅包含上次循环运行的数据。Powershell很有趣,不是吗?坚持下去!我们没有收到你的来信。。给出的答案解决了你的问题吗?如果是,请点击大的复选图标“代码>✓代码>在左边。这将帮助其他有类似问题的人更容易找到它。所以。。。你的问题是什么?有什么问题?错误在哪里?什么东西没有按预期工作。。。细节。。。嗨,欢迎Mariano。我在这里看到了一个非常好的尝试,但仍然需要在一些基础上做一些工作。在这里查看您的数据是如何流动的。在第一个ForEach循环中,将数据分配给变量$OUTPUT。每次循环运行$OUTPUT时,都会被新数据覆盖。看起来您试图通过捕获$Outputs来解决这个问题,这很好,但仍然存在一些问题。稍后,您将有另一个foreach循环,它尝试使用$OUTPUT而不是$Outputs$输出将仅包含上次循环运行的数据。Powershell很有趣,不是吗?坚持下去!我们没有收到你的来信。。给出的答案解决了你的问题吗?如果是,请点击大的复选图标“代码>✓代码>在左边。这将帮助其他有类似问题的人更容易地找到它。