我使用下面的脚本将文件从网络共享复制到本地驱动器。但是,我无法访问路径并出现“路径未找到”错误。我的用例是我需要从 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 远程处理不允许凭证委派或“第二跳”。如果您想从远程会话连接到远程计算机(在本例中为网络共享),则需要允许将凭据委派给该计算机。
要允许它,您需要配置 CredSSP。请在此处查看有关问题以及如何设置的详细信息:使用 CredSSP 启用 PowerShell“第二跳”功能
您可以通过计划任务来完成。系统用户可以访问 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
}