2016-03-06 29 views
0

曾經在我的腳本中工作的東西不再有了,我不知道了。invoke命令 - scriptblock錯誤

我試圖做到以下幾點:

Import-Module 'H:\folder\folder1\Remove-Software.psm1' 
$sessionoption = New-PSSessionOption -SkipCACheck -SkipCNCheck 
$s = New-PSSession -ComputerName $Global:DevicePrimaryIP -Credential $Global:Creds -SessionOption $sessionoption 
Invoke-Command -Session $s -ScriptBlock $function:RemoveSoftware 

這應該登錄到遠程軟件和刪除軟件,但我不斷收到以下錯誤:

Invoke-Command : Cannot validate argument on parameter 'ScriptBlock'. The 
argument is null. Provide a valid value for the argument, and then try running 
the command again. 
At line:1 char:41

而且,我我已經嘗試了我能想到的scriptblock的每個組合。

我已經在腳本的其他地方改變了一些東西,但一段時間沒有觸及它。如果其他人可以看到問題anyhelp將不勝感激。

+0

你似乎並不具備的功能腳本中的'RemoveSoftware'。 –

+0

該功能從另一個模塊導入 – Mike

+0

在該模塊中,它包含一個名爲去除軟件(無連字符)的函數,其中有多個進程和目錄被殺死/刪除。沒有任何參數要麼解析它,只是運行的代碼在遠程服務器上的一個小片段: '函數removesoftware { 殺死進程 刪除目錄 迴歸「軟件已被刪除」 }' – Mike

回答

0

您的功能沒有從模塊導入。您可以使用-Verbose查看導入的內容。例如:

Import-Module .\Desktop\testmodule.psm1 -Verbose 
VERBOSE: Loading module from path 'C:\Users\frode\Desktop\testmodule.psm1'. 
VERBOSE: Exporting function 'testModuleFunction'. 
VERBOSE: Importing function 'testModuleFunction'. 

如果「模塊」只是一個腳本文件有一些功能,你可以嘗試簡單的點源他們:

. 'H:\folder\folder1\Remove-Software.psm1' 
+0

感謝您的迴應,所以我點了它,它出口和進口「去除軟件」。我能夠在本地運行該命令,但是一旦我將它放入invokecommand中的-scriptblock中,就會出現錯誤,其中我的scriptblock參數爲null。 我爲大型IT公司工作,我們的基礎設施很複雜,但我不認爲它應該干擾這個?我能夠創建會話並將psdrives與目標服務器進行映射。 Infact,一個月前我有這個工作..你有任何其他的想法? 感謝您的幫助至此 – Mike

+0

對!因此,我可以將'removedoftware'函數放在名爲'$ test1'的變量中,並且可以將它與'invoke-command' cmdlet一起使用並且成功。 -verbose之前顯示該函數正在導入,但是當該函數位於另一個模塊中時,它似乎無法遠程運行。 我真的很喜歡我所有的功能都在自己的模塊中,因爲這個腳本真的很長..有沒有其他人有更多的想法? – Mike