2017-05-25 24 views
0

我們組織中的某些用戶尚未在AD中配置配置文件路徑。 (下遠程桌面服務配置文件)powershell - AD用戶沒有配置文件路徑

我想這一切的用戶,所以我在PowerShell中寫了:

​​

的「如果($ TermianlPath -eq $空)」的檢查沒有按」牛逼付出一切......

有人能幫助嗎?

謝謝。

+0

你要查詢哪個版本的服務器? – Matt

回答

0

有一個與你正在嘗試做的兩個問題。

  1. $Userinfo沒有將每個廣告屬性公開爲屬性。默認情況下,PowerShell允許您請求不存在的變量屬性而不會出錯。

  2. 你正在尋找的屬性是not called TerminalServicesProfilePath in Server 2008+。如果你看一下ADSI編輯或其他方式,你會看到這些屬性

msTSAllowLogon 
msTSHomeDirectory 
msTSHomeDrive 
msTSProfilePath 
.... 

那麼你應該做這涉及這將返回配置文件路徑或空,如果它不存在。

$userInfo.psbase.InvokeGet("msTSProfilePath") 

使用這樣的事情應該工作

Get-ADUser -Filter * | 
    Where-Object{ 
     -not ([ADSI]"LDAP://$($_.DistinguishedName)").psbase.InvokeGet("msTSProfilePath") 
    } | ForEach-Object{ 
     Write-Host "User $($_.SamAccountName) has no Terminal path." -ForegroundColor Cyan  
} 

where子句允許不具備設置爲傳承管道中的配置文件路徑的任何用戶。

0

PowerShell是一個有點奇怪以$空。很多時候,可以返回的東西不是一個$ null,而是一個空字符串。嘗試檢查$ null和「」。

此外,而不是使用兩個空引號「」,您可以使用[字符串] :: IsNullOrEmpty(),以及用於這可能是一個字符串的任何變量。