New-PSDrive在作为作业提交时似乎不能在脚本块中工作,它可以作为脚本块以交互方式工作。
这可用作普通的交互式脚本块:
prices_tmp
这不会安装驱动器:
inner join
找不到驱动器。名为“share1”的驱动器不存在。
似乎安全上下文没有在会话中传输?
答案 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