2017-07-13 83 views
2

我們使用AD擴展屬性之一來標記具有用戶ID作爲該組的「所有者」的組。只有業主可以向組織要求更改/添加等。僅當使用ISE時纔會出現確認對話框

我有一個相當長的PowerShell腳本,效果很好。它要求在對話框中提供用戶登錄名,爲他們所在的組進行輪詢,在另一個對話框中顯示該列表,以及當我從該列表中選擇一個組時,它會確認用戶是否爲該組的所有者組。最後一個對話框給出YES或NO的答案,當我通過ISE運行腳本時工作正常,但如果我只是通過命令行運行腳本或使用'run with powershell',則不顯示最終答案' 選項。

這是一段代碼。如果人們認爲有必要引用,我會轉儲整個腳本。

#Declares if the user is an owner of selected group or not. 

if ($match -eq $False) { 
    #write-host "The user $user IS NOT an owner of $group" 
    [System.Windows.MessageBox]::Show("The user $user IS NOT an owner of $group") 
} 
else 
{ 
    #write-host "The user $user DOES own $group" 
    [System.Windows.MessageBox]::Show("The user $user DOES own $group") 
} 

此腳本的原因最終是這樣,用戶可以自己提供一些基本的羣組處置請求。添加新成員,刪除成員,甚至將組移到另一個OU。但是需要出現對話框,特別是如果有問題的用戶不擁有該組。如果他們這樣做,這將是一個點擊到下一個功能(這是不是真的在寫一個有凝聚力的形式呢。)

回答

4

System.Windows.MessageBox type是的Windows Presentation Framework的一部分,並且包含在PresentationFramework.dll組裝。

調用MessageBox.Show()之前,請務必將其加載到您的會話:

Add-Type -AssemblyName PresentationFramework 
# Now you can use [System.Windows.MessageBox] 

它在ISE的原因可能是ISE本身就已經是一個WPF應用程序,所以PresentationFramework組件已經加載到它的AppDomain

+0

ISE加載的程序集幾乎是打開PowerShell窗口的兩倍。奇怪,但真的...... –

+0

公平地說,它不僅需要導入S.M.A API和接口與conhost,它必須模擬conhost +實現一個完整的開發環境。這並不奇怪,當你想到它時,它有更多的引用程序集 –

+1

Add-Type -AssemblyName PresentationFramework 這樣做!我希望這是一件簡單的事情!謝謝! – Rich