2017-06-16 85 views
1

嘗試幾種可能性後我不確定如何繼續。Powershell封裝參數的不同憑證

我需要執行一個腳本"C:\test1\script.ps1"我也需要通過這個腳本傳遞一些參數。這些參數(-Hashtag $Hashtag -Name $Name等等)存儲在名爲$arguments的變量中。

所以最後調用應該是這樣的:C:\test1\script.ps1 $arguments

這是沒有問題的,但現在我無法得到管理的東西的工作。

我的目標是以不同的用戶身份執行此操作。登錄憑據存儲在$cred

我已經嘗試下面的事情相比,這裏的相關主題論壇:

  1. 命令

    Invoke-Command -Credential $cred -Authentication Credssp -ComputerName home -ScriptBlock {C:\test1\script.ps1 $arguments} 
    

    Powershell的結果:一些參數(以這種情況下的Hashtag)是空的。林不知道爲什麼會發生這種情況,因爲我只是用所有的東西填充$ arguments變量。

  2. 命令

    Start-Process -FilePath "C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe" -ArgumentList "C:\test1\script.ps1 $arguments -Credential $cred -WorkingDirectory 'C:\\Windows\System32' 
    

    這導致該腳本將不會得到執行。

有沒有人有關於處理該建設的更多信息?也許有另一個命令我可以將憑據傳遞給?

作爲另一個通知,我不能使用憑證提示,所以任何UAC考慮的解決方案都不適合我的問題。

+0

'$ arguments'需要[splatted](https://technet.microsoft.com/en-us/library/gg675931.aspx)例如。 '@ arguments' – BenH

+0

我按照說明操作,但它也不起作用。 '$參數= @ { 參數1 = $ ARGUMENT1 ARGUMENT2 = $ ARGUMENT2 }' –

+0

我跟着指示,但它不會工作。 '$參數= @ { 參數1 = $ ARGUMENT1 ARGUMENT2 = $ ARGUMENT2 }' 所需的腳本被執行,多數民衆贊成罰款。但拋出一個錯誤的參數是空的...當我打印@arguments有所有的數據iI需要。因此,濺射應該是精確的。但是,這些爭論確實是正確地傳遞給腳本的。 我現在就這樣調用腳本: '-ScriptBlock {C:\ test1 \ script.ps1 @ausfuehrung}' 這是正確的嗎? –

回答

0
Invoke-Command -Credential $cred -Authentication Credssp -ComputerName home -ScriptBlock {C:\test1\script.ps1} -ArgumentList 'argument1','argument2','argument3' 

請確保在腳本中定義了位置參數。這樣,參數1被分配給腳本中的第一個參數,依此類推。

+0

那麼,如果我使用這個語法,Powershell告訴我參數名稱「參數」沒有參數。 我這樣寫,因爲參數動態變化我需要使用變量: '-ScriptBlock {C:\ test1 \ script.ps1} - 參數$ Argument1,$ Argument2 ...' –

+0

我的錯誤,參數應該是-ArgumentList – CrypticSage

+0

謝謝你的建議,但我得到了它與運行: '開始powershell.exe -ArgumentList 「C:\ test1的\ script.ps1 $參數」 -credential $憑證' 現在只是返回值丟失。但我正試圖自己解決這個問題。感謝所有的幫助:) –