我发现了一个类似的问题here,但它并不适合我的需要,而且我在修改它时遇到了麻烦。
我需要使用以下格式创建特定OU中所有用户的#!/usr/bin/python
# -*- coding: utf-8 -*-
""" test script to learn PyInstaller usage
"""
import sys
from PyQt4 import QtCore
from PyQt4 import QtGui
class Main(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_ADCmonitor()
self.ui.setupUi(self)
self.exitAction = QtGui.QAction('Exit', self)
self.exitAction.setShortcut('Ctrl+Q')
self.exitAction.triggered.connect(self.close)
toolbar = self.addToolBar('Exit')
toolbar.addAction(self.exitAction)
self.refresh = QtCore.QTimer()
self.status_freeze_timer = QtCore.QTimer()
self.update_data()
def update_data(self):
self.status_refresh('Ok')
self.refresh.singleShot(200, self.update_data)
def status_refresh(self, msg):
self.ui.statusbar.showMessage(msg)
class Ui_ADCmonitor(object):
def setupUi(self, ADCmonitor):
ADCmonitor.setObjectName("ADCmonitor")
ADCmonitor.resize(300, 300)
self.statusbar = QtGui.QStatusBar(ADCmonitor)
self.statusbar.setObjectName("statusbar")
ADCmonitor.setStatusBar(self.statusbar)
QtCore.QMetaObject.connectSlotsByName(ADCmonitor)
ADCmonitor.setWindowTitle("ADC Monitor")
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = Main()
window.show()
sys.exit(app.exec_())
文件及其AD组成员资格:
.csv
我认为这个剧本让我大部分都在那里:
User, Group (This is a Header)
User1, Group1
User1, Group2
User1, Group3
User2, Group1
User3, Group1
User4, Group1
User4, Group2
这个问题有两个问题。
我想在$Users = Get-ADGroup -SearchBase "OU=OrgUnit1,OU=OrgUnit2,OU=OrgUnit3,DC=XXX,DC=LOCAL" -Filter * `
| Get-ADGroupMember -Recursive `
| ForEach-Object { Get-ADUser $_ –Properties MemberOf | Select SamAccountName, MemberOf; } `
| Sort-Object SamAccountName
| export-csv C:\Messaging\PowerShell\ADUsers\Test1.csv
上搜索,而不必搜索完整的专有名称,因为子OU并不总是相同。
OU=OrgUnit1
输出具有AD组的完整可分辨名称,我只需要没有限定符的组名称
答案 0 :(得分:1)
使用Get-ADOrganizationalUnit
获取您要搜索的OU:
$ou = Get-ADOrganizationalUnit -Filter "Name -eq 'OrgUnit1'"
Get-ADGroup -Filter * -SearchBase $ou | ...
memberOf
属性是一个组列表(或者更确切地说是它们的专有名称)。要获得所需的输出,您需要展开并解析组名称并创建具有所需属性的新自定义对象:
... | ForEach-Object {
$account = $_.SamAccountName
$_.MemberOf | Get-ADGroup | ForEach-Object {
New-Object -Type PSCustomObject -Property @{
SamAccountName = $account
Group = $_.Name
}
}
} | ...
此外,如果在该管道的末尾将输出导出到文件,那么将管道输出分配给变量($Users
)毫无意义。
修改后的代码:
$ou = Get-ADOrganizationalUnit -Filter "Name -eq 'OrgUnit1'"
Get-ADGroup -Filter * -SearchBase $ou |
Get-ADGroupMember -Recursive |
ForEach-Object { Get-ADUser $_ -Properties MemberOf; } |
Sort-Object SamAccountName |
ForEach-Object {
$account = $_.SamAccountName
$_.MemberOf | Get-ADGroup | ForEach-Object {
New-Object -Type PSCustomObject -Property @{
SamAccountName = $account
Group = $_.Name
}
}
} | Export-Csv 'C:\Messaging\PowerShell\ADUsers\Test1.csv'
答案 1 :(得分:0)
您不需要编写这么多代码。用户在 PowerShell 中使用以下代码导出所有 AD 用户。
像这样:
Import-Module ActiveDirectory
Get-ADUser -Filter * -Properties * | export-csv c:\ADusers.csv
如果你有一个大广告,那可能需要一段时间。