如何在 Invoke-command 中访问网络共享驱动器

问题描述 投票:0回答:2

我使用下面的脚本将文件从网络共享复制到本地驱动器。但是,我无法访问路径并出现“路径未找到”错误。我的用例是我需要从 Jenkins 服务器执行此脚本并远程到 server1,然后从共享目录 (\server2\QlikView) 复制文件,该目录已作为 S:\ 驱动器安装到 server1。如果我从 server1 运行命令,我可以从 powershell 访问此共享路径。但是,不能在 Invoke-Command 脚本块内访问,如图所示。对此有什么想法吗?

$server = "server1"
$source_dir = "\\server2\QlikView"
$processing_dir = "M:\script_test\processing"
$processed_dir = ""
$user = 'Domain\user1'
$Password = '******'
$SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList $User, $SecurePassword

 Invoke-Command -ComputerName $server -Credential $cred -ScriptBlock {
  param ($server,$source_dir,$processing_dir)
echo "$source_dir"
 Test-path $source_dir
 copy-item -Path $source_dir\* -Destination M:\script_test
  } -ArgumentList $server,$source_dir,$processing_dir
powershell powershell-2.0
2个回答
1
投票

默认情况下,PowerShell 远程处理不允许凭证委派或“第二跳”。如果您想从远程会话连接到远程计算机(在本例中为网络共享),则需要允许将凭据委派给该计算机。

要允许它,您需要配置 CredSSP。请在此处查看有关问题以及如何设置的详细信息:使用 CredSSP 启用 PowerShell“第二跳”功能


0
投票

您可以通过计划任务来完成。系统用户可以访问 Active Directory 共享。

icm comp001 { 
  $action = New-ScheduledTaskAction -Execute 'cmd' -argument '/c \\sccmserver\sources\applications\install.bat > c:\users\admin\install.log 2>&1'
  Register-ScheduledTask -action $action -taskname install -user system -force > $null
  Start-ScheduledTask -TaskName install
  while ((Get-ScheduledTask -TaskName install).State -ne 'Ready') {
    Write-Verbose -Message 'Waiting on scheduled task...' }
  Get-ScheduledTask install | Get-ScheduledTaskInfo | select LastTaskResult
}
© www.soinside.com 2019 - 2024. All rights reserved.