【发布时间】:2019-09-16 18:11:38
【问题描述】:
我想阅读一份 excel 表格,并将每个用户名/电子邮件与我们现有的 Active Directory 进行比较,然后只列出那些 Enabled=False 的用户。意思是过期的用户。
目前的代码如下:
# Specify the path to the Excel file and the WorkSheet Name
$FilePath = "C:\Users\user\Downloads\mfausers.xlsx"
$SheetName = "mfassuers"
# Create an Object Excel.Application using Com interface
$objExcel = New-Object -ComObject Excel.Application
# Disable the 'visible' property so the document won't open in excel
$objExcel.Visible = $false
# Open the Excel file and save it in $WorkBook
$WorkBook = $objExcel.Workbooks.Open($FilePath)
# Load the WorkSheet 'BuildSpecs'
$WorkSheet = $WorkBook.sheets.item($SheetName)
Get-ADUser -Filter {Name -eq "$worksheet.Range("A77").Text"}
给我如下错误:
Get-ADUser : Error parsing query: 'Name -eq "$worksheet.Range("A77").Text"' Error Message: 'syntax error' at position: '29'.
At line:17 char:1
+ Get-ADUser -Filter {Name -eq "$worksheet.Range("A77").Text"}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Get-ADUser], ADFilterParsingException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.M
anagement.Commands.GetADUser
我使用的上述代码来自以下网站: https://lazywinadmin.com/2014/03/powershell-read-excel-file-using-com.html
我有方便的命令,但我不是经验丰富的 PowerShell 家伙。
脚本应该查找具有用户名的列 A,然后我想使用一些基本检查,如下所示:
Get-ADUser -Filter {Name -eq "FirstName1 LastName1"}
DistinguishedName : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Enabled : True
GivenName : xxxxxxxxxxxxxxx
Name : xxxxxxxxxxxxxxx
ObjectClass : user
ObjectGUID : xxxxxxxxxxxxxxx
SamAccountName : xxxxxxxxxxxxxxx
SID : xxxxxxxxxxxxxxx
Surname : xxxxxxxxxxxxxxx
UserPrincipalName : xxxxxxxxxxxxxxx
如果 Enabled = False,则吐出这个用户,否则继续。
【问题讨论】:
-
错误消失了。工作表名称有错字。已更正,一切正常。
标签: powershell active-directory