powershell new-psdrive没有映射驱动器

时间:2017-01-09 17:56:01

标签: powershell

New-PSDrive在作为作业提交时似乎不能在脚本块中工作,它可以作为脚本块以交互方式工作。

这可用作普通的交互式脚本块:

prices_tmp

这不会安装驱动器:

inner join

找不到驱动器。名为“share1”的驱动器不存在。

似乎安全上下文没有在会话中传输?

2 个答案:

答案 0 :(得分:0)

在您的示例中,您使用凭据创建与远程计算机的连接,但会话本身未使用能够进行第二跳的令牌。该会话正在使用所谓的网络登录。

您指出Invoke-Command中的New-PSDrive在未用作作业的一部分时工作正常 - 但请验证。

在您的scriptblock中尝试使用此行 - 请注意添加-Credential以明确将驱动器映射为与您连接会话的用户。

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

您也可以使用CredSSP解决此问题,但这有其他安全隐患,对于简单的远程文件共享访问不是必需的。

以这种方式将凭证传递到远程服务器仍应仅用于您信任的服务器。

答案 1 :(得分:-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