簡體   English   中英

PowerShell-繼續之前檢查用戶是否在組中(Active Directory)

[英]PowerShell - Check to See if User is in Group before continuing (Active Directory)

我正在編寫一個腳本,當發出請求時,該腳本將自動按組配置用戶。 我正在運行檢查以查看它是否在列表中的特定組中或包含諸如HDS之類的短語。 我目前無法正常使用“ contains”命令。 這是我得到的:

$memberof = get-QADMemberOf -Identity tpatry
if($memberof -contains "HDS" -eq $true){
Write-Host "User is already a member of one of the Job Roles"}

當我運行這個:

$memberof = get-QADMemberOf tpatry
Write-Host $memberof

我得到了屬於我的這些團體。 這是$ memberof返回的內容:

USERS\Domain Users USERS\CCNet-HDS-ADMIN USERS\HDS-CP-STUDENT-ACL USERS\ME-513 USERS\HDS-IT-FTE-ACL USERS\MNE-STUDENTS-O USERS\HDS-ADMIN

當我運行此命令時,只需給我一個新的提示即可運行另一個提示以輸入我的下一個命令。

我必須在-contains上查找文檔。 似乎我以前看過它,但是我總是忽略或忘記那個。

不知道主要問題是否與get-QADMemberOf返回的內容有關嗎? 我沒有該功能, 在線檢查看起來可能會返回對象的集合/列表,而不是字符串? 如果不是字符串,則可能需要遍歷要測試的集合中的每個項目,以尋找所需的值。

$groups = get-QADMemberOf -identity tpatry
foreach($group in $groups)
{

  # pipe one of them to gm (e.g. $group | gm) to get a list of properties

  if ($group.Name -like "*HDS*" -eq $true) 
  { 
       write-host "found" 
  }
}

如果返回值一個字符串,你可以嘗試般的操作:

$str = "this is a test"
if ( $str -like "*test*" -eq $true )
{
   write-host "found"
}

我們還可以根據需要使用C#:

$str = "this is a test"
if ($str.Contains("test") -eq $true )
{
    write-host "found"
}

您可以將Name屬性與通配符一起使用,以僅返回您要訪問的組:

$memberOf = Get-QADMemberOf -Identity tpatry -Name *HDS*

if($memberOf)
{
    Write-Host "User is already a member of one of the Job Roles"
}
else
{
    Write-Host "User is not a member of any of the Job Roles"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM