2009-12-09 55 views
1

剛剛聽了Hansellminutes播客。他與兩位微軟PS開發人員進行了談話。他們提到了PS V2遙控功能。powershell v2遠程功能?

我有一些基於PS v1的腳本。在遠程命令或執行方面,我在本地和遠程機器上安裝了PS。然後,我使用PsExec.exe在遠程推送bat來執行PS腳本。現在我正在考慮利用PS V2。

要我簡單的問題,以獲得對本地文件的清單,我可以使用下面的代碼:

$fs = Get-Item -Path $Path | Where { !$_.PSIsContainer ... } # more constrains in ... 
if ($fs -ne $null) 
{ 
    # continue to work on each file in the collection 
    ... 
} 

什麼是等效的命令從遠程獲取文件的集合?我更喜歡獲取類似的文件對象集合,以便我可以訪問它們的屬性。

第二個問題是如何使用外部應用程序執行遠程命令?我之前嘗試過使用WIM過程,但是我無法讓WMI類在Windows 2008服務器的情況下工作。然後,我使用PsExec.exe將蝙蝠推送到遠程以執行PS腳本。它適用於這種情況。但是,我必須在遙控器上安裝PS。我要去另一個遙遠的地方工作。我會盡量避免在遙控器上安裝PS。我可以利用PS V2的優勢在遠程Windows上執行命令嗎?什麼是新命令?

順便說一下,通常,我必須將用戶名和密碼傳遞給遠程。我想在PS我也必須傳遞user/pwd。

回答

4

你可以把你的代碼在上面的腳本文件,並使用V2遠程像這樣調用它在遠程計算機上:

PS> Invoke-Command remotePCName -file c:\myscript.ps1 

您需要具有管理員PRIVS運行(升高,如果啓用UAC)爲了使用遠程處理。上面的命令將腳本複製到遠程機器,執行它並返回反序列化的對象。這些物品本質上屬於物品袋。它們不是「實時」對象,並且它們的設置屬性(如IsReadOnly)不會影響遠程文件。如果你想設置屬性,那麼你的腳本在遠程PC上執行。

,如果您有腳本的一點點的選擇是使用一個腳本塊,像這樣:

PS> Invoke-Command remotePCName { Get-Item C:\*.txt | Where {$_.IsReadOnly } 

您可以在任何腳本或腳本塊在遠程計算機上執行本機命令(EXE)。您只需確保EXE在遠程PC上可用。

關於憑證,如果您在域中並且在遠程計算機上擁有管理員權限,則不需要傳遞憑據,因爲您的默認憑證應該可以工作。如果你需要爲特定用戶身份運行,然後使用上調用命令的參數-Credential像這樣:

PS> $cred = Get-Credential 
PS> icm remotePCName { gci c:\windows\system32 -r *.sys } -credential $cred 
+0

所以我不需要在遠程計算機上安裝PS,對吧? – 2009-12-09 04:10:26

+1

如果您想要使用PowerShell遠程處理,那麼遠程計算機需要使用PowerShell 2.0和WinRM(兩者都來自Windows管理框架,適用於較低級別的操作系統),您必須使用Enable-PSRemoting在遠程PC上啓用遠程處理。 – 2009-12-09 06:41:13

+0

太糟糕了。這是問題。我有幾個遙控器與各種Windows,如Windows Server 2008和Windows XP。其中一些我不能安裝PS v2,因爲需要SP3並且SP3尚未得到我們網絡團隊的批准。 – 2009-12-09 16:12:42

0

關於你的最後一個註釋,不PowerShell的將使用Windows集成安全性,所以你不應該通過任何用戶名或密碼,除非你想以不同的用戶身份運行它。

如果您還沒有啓用PS遠程處理,每次我嘗試過時,我必須在啓用遠程處理時關閉UAC(然後我可以在啓用遠程處理後重新啓用UAC)。從提升的命令提示符運行啓用-PSRemoting是不夠的,並且錯誤消息根本沒有用。

編輯:我剛剛在新的Windows 7虛擬機中確認這不是問題。這可能是一個測試版問題,我不再經歷,因爲我一直在使用PowerShell和Windows 7的beta/rc/ctp很長一段時間。

+0

有趣。我從來沒有遇到過啓用UAC遠程處理的問題,只要我從提升的提示符運行命令。當然,我的大部分經驗都在工作組環境(即家庭網絡)中。 – 2009-12-09 02:14:59

+0

這裏與工作組相同。我不知道爲什麼。我想我會看到更多。即使在Win2008R2上,我也無法在不禁用UAC的情況下從GUI啓用遠程管理。 – Josh 2009-12-09 02:34:13

+0

您不必禁用UAC。我在家裏有一個小域名,並且在服務器和所有我的盒子上啓用遠程處理而不會與UAC混淆 - 除了確保控制檯已經升高。 當高架帳戶與登錄帳戶不同時(即:以「usera」身份登錄並且由於「admin1」導致某些任務出現問題(例如BITS)),我看到一些UAC事件失敗。 – Jaykul 2009-12-09 21:27:18