【问题标题】:Reading data from Excel-sheet and comparing with existing users从 Excel 表中读取数据并与现有用户进行比较
【发布时间】: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


【解决方案1】:

删除引号

{Name -eq $worksheet.Range("A77").Text}

【讨论】:

    猜你喜欢
    • 2015-07-24
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多