2017-01-09 84 views
2

新PSDrive似乎在作爲一個作業提交時,在腳本塊中工作,它交互作爲一個腳本塊工作良好。PowerShell新PSD驅動器沒有映射驅動器

這可以作爲一個正常的交互腳本塊:

$getcred = Get-Credential 'myuser' 
$servers = "myserver" 
$jsession = New-PSSession -ComputerName $servers -Credential $getcred 
Invoke-Command -ScriptBlock { 
New-PSDrive -name share1 -psprovider FileSystem -root \\server\directory; 
dir share1: 
}; 

這不會安裝驅動器:

$getcred = Get-Credential 'myuser' 
$servers = "myserver" 
$jsession = New-PSSession -ComputerName $servers -Credential $getcred 
$job = Invoke-Command -Session $jsession -AsJob -Jobname 'testjob' -ScriptBlock { 
New-PSDrive -name share1 -psprovider FileSystem -root \\server\directory; 
dir share1: 
}; 
Wait-Job $job 
$r = Receive-Job $job 
$r 

找不到驅動。名稱爲'share1'的驅動器不存在。

看來安全上下文沒有在會話上傳輸?

+0

你確定原來的例子在工作之外工作?這個問題應該如我在答覆中提到的那樣,並且在有或沒有工作的情況下發生。問題應該是invoke-command的雙重跳躍,而不是作業。 –

回答

0

在您的示例中,您使用憑證創建與遠程計算機的連接,但會話本身未使用能夠進行第二跳的令牌。會議使用了所謂的網絡登錄。

您指出Invoke-Command內的New-PSDrive在未用作工作的一部分時工作正常 - 但請確認。

在腳本塊中嘗試此行 - 請注意添加-Credential以將連接該會話的用戶顯式映射到該驅動器。

New-PSDrive -name share1 -psprovider FileSystem -root \\server\directory -Credential $using:getcred 

您還可以CredSSP解決這個問題,但有其他安全隱患而沒有必要簡單的遠程文件共享訪問。

將憑證以這種方式傳遞到遠程服務器應該仍然只能用於您信任的服務器。

+0

我可以100%確認發佈的問題中的第一個示例有效,第二個區段不起作用。我會嘗試在最後添加$使用。 –

+0

您可能在遠程服務器上擁有先前映射的驅動器,該驅動器已映射了明確的憑證。我不太清楚這項工作會如何幹擾這一點,但我建議在映射PS驅動器之前調用'get-psdrive'和'get-smbmapping'來查看預先存在的內容。 –

+0

不,它不是在嘗試使用一臺從未連接過的全新服務器。 –

-2

您正試圖在一行中運行多個命令。

invoke-command 

用於一次運行單個命令。

建立到遠程計算機的持續性連接(連續執行多個命令)使用方法:

Enter-PSSession 

如果你仍然想使用你的腳本的版本,她那應該怎麼做

$getcred = Get-Credential 'myuser' 
$servers = "myserver" 

$jsession = New-PSSession -ComputerName $servers -Credential $getcred 

$job = Invoke-Command -Session $jsession -ScriptBlock { New-PSDrive -name share1 -psprovider FileSystem -root \\server\directory } 
$job2 = Invoke-Command -Session $jsession -ScriptBlock {dir share1:} 

$job 
$job2 
+0

你收到了什麼錯誤信息? – YanivK

+1

那不是真的Invoke-command在我的第一個工作示例中可以有多個命令。我需要使用許多計算機上的網絡對象上的文件連續執行一系列幾個命令。 AsAJob應該是理想的,因爲它在後臺進行。你的例子和我的第二部分一樣失敗,但我知道它不是基於許可的問題,因爲我的第一個例子工作。 –

+0

我沒有看到一個foreach或任何開始過程在腳本示例中結束。 – YanivK