2016-04-06 61 views
0


好的,所以這一直困擾着我一段時間,現在我已經嘗試了太多東西。

我想運行一個PowerShell腳本 - 我的用戶帳戶是一個常規的域名,但它是我的電腦上的本地管理員。因此,我創建了一個PowerShell腳本,提示我輸入憑據(在其中鍵入我的域管理員帳戶的憑據)以用於調用需要此域管理員提升的另一個腳本。 這個腳本是這樣的:儘管是管理員,訪問被拒絕到本地主機 - PowerShell

Invoke-Command -FilePath "C:\Temp\script.ps1" -ComputerName localhost -Credential Get-Credential 

這裏script.ps1是需要域管理員海拔腳本。
執行在提示符下顯示腳本結果的憑證,然後以下錯誤:

[localhost] Connecting to remote server localhost failed with the following error message : Access is denied. 

我試着.bat文件看起來像這樣瞎搞:

SET ThisScriptsDirectory=%~dp0 
SET PowerShellScriptPath=%ThisScriptsDirectory%script.ps1 PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%PowerShellScriptPath%""' -Verb RunAs}"; 

藏漢,但我無法實現它 - 它不會將腳本提升到域管理員級別。
然而,最後,我需要提及的是,如果我使用域管理員標高打開PowerShell,導航到C:\ Temp \ script.ps1並通過。\ script.ps1執行它,那麼我想要使用域提升運行的腳本有效。

有什麼建議嗎?

+0

如果您只是試圖在本地機器上執行腳本,爲什麼要使用invoke-command?您可以運行該腳本並在您的PowerShell主機中將參數傳遞給它。 –

回答

1

如果您擁有本地管理權限,請以管理員身份運行powershell並運行Invoke-Command而不使用-Credential標誌。

如果您只在本地運行腳本,則不需要Invoke-Command。你最好只是運行腳本並將參數傳遞給它。

+0

本地管理權限是不夠的,我需要我的域管理員的權利。 – zniwalla

+0

將域管理員作爲本地管理員添加到本地計算機,像其他用戶一樣運行powershell(右鍵單擊以在上下文菜單中以'另一個用戶身份運行...')輸入DA憑據,然後運行腳本。我在經常使用我的許多管理賬戶進行交易,AD和域本地管理員賬戶時這樣做。 –

0

那麼,如果我理解正確,你做錯了。

您提供的憑證用於訪問本地主機(您不需要BTW)。腳本仍然執行未升級。有兩種解決方案:

  • 您需要提升powershell本身並執行腳本。
  • 您需要更改腳本,以便它自己接受Credential參數並使用它來訪問事物。除非您演示劇本,否則我無法對其進行說明。

可以提升外殼採用:

start powershell -verb Runas 

這裏的問題是,除非你禁用UAC,它會提示你。不幸的是,我不知道這個簡單的方法。一個可靠的方法是將腳本添加到任務計劃程序並將任務設置爲運行提升,然後運行並刪除任務。所有這些都可以自動化。這是UAC系統不幸設計的結果(Linux上的sudo服務於相同的目的,會將響應緩存一段時間,以便後續命令不會提示)。這會去是這樣的:

schtasks /Create /TN runner ... /TR powershell -File script.ps1 /RU username /RP password /RL HIGHEST 
    schtasks /run runner 
    schtasks /delete runner 
+0

我已經嘗試了你的第一個解決方案 - 如前所述 - 但我無法想出一個方法來自動化該過程。它需要提升爲域管理員,而不是本地管理員。 該腳本正在AD中創建一個用戶並修改其他AD和Exchange的東西,這是爲域管理員保留的任務,並且不適用於我的本地管理員。 – zniwalla

+0

這是不相關的,如果它在域或本地。只需使用'/ RU domain \ username'。你的腳本也可以接受'-Credential'參數,並且用'Get-Credential'傳遞它。然後,您可以使用'schtasks.exe'(您將必須提取密碼)或接受憑證的較新的TaskScheduler cmdlet(> = Win8)。 – majkinetor

+0

好吧,試試看:'schtasks/Create/TN createUser/TR「powershell -File script.ps1」/ RU domain \ user/RP/RL HIGHEST/SC MONTHLY'但它似乎並沒有執行腳本。當我運行任務時,cmd會輸出:'SUCCESS:試圖運行計劃任務「createUser」。' – zniwalla

0

一個題目說幫我(我也有類似的情況)是部分About Remote Troubleshooting「HOW TO啓用遠程FOR非管理用戶」。基本上,它會告訴您執行PS命令:Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI,並向您嘗試使用它的用戶授予執行權限。

相關問題