在PC A上,我正在尝试运行此脚本。它应该在PC B上运行Exe。它将运行的Exe驻留在PC C上。这些是Windows 7 OS PC PC C是服务器2008 \ 2012
$text ='Start-process -FilePath "\\<serverpath>\App.exe" "`-f switch`.switch"'
Invoke-Command -ComputerName $PCname -Scriptblock { param ($text)
$text | Invoke-Expression
}
$ text中的命令可以从远程PC上的powershell控制台正确运行。 运行整个脚本可以得到: 由于错误,该命令无法执行:访问被拒绝。
做一些研究,我相信我会遇到“ double hop issue”的问题
简要说明。
您有计算机A,B和C。您要从A运行脚本,而B则要在C上运行脚本\进程。您的凭据不会从B传递到C。
由于要求,我认为使用
$cred = Get-Credential Contoso\Administrator
Invoke-Command -ComputerName ServerB -Credential $cred -ScriptBlock {
hostname
Invoke-Command -ComputerName ServerC -Credential $Using:cred -ScriptBlock {hostname}
}
如链接中所述。我想遇到的一个问题是,我希望进程在PC B上运行,而该进程仅驻留在PC C上。
答案 0 :(得分:0)
从PC-A到PB-B和PC-B的远程呼叫需要在PC-C上运行.exe。
Invoke-Command要求您是要尝试击中的目标的管理员,并且仅适用于该目标。
您是说您尝试了最后一块代码,但失败了吗?
因为,如果所有远程处理均已正确配置,则应该以这种方式工作。
$PC_A = 'ws01'
$PC_B = 'iis01'
$cred = Get-Credential "$env:USERDOMAIN\$env:USERNAME"
"Running from $env:COMPUTERNAME"
"Targetng $PC_A"
Invoke-Command -ComputerName $PC_A -Credential $cred -ScriptBlock {
"Targeting $Using:PC_B from $Using:PC_A via remote source"
Invoke-Command -ComputerName $Using:PC_B -Credential $Using:cred -ScriptBlock {"PC_B name is $env:COMPUTERNAME"
notepad.exe
Get-Process -Name notepad
}
}
# Results
Running from DC01
Targetng ws01
Targeting iis01 from ws01 via remote source
PC_B name is IIS01
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName PSComputerName
------- ------ ----- ----- ----- ------ -- ----------- --------------
172 10 2184 9424 ...29 0.02 3520 notepad ws01
您还应该考虑在第二跳上将PSDrive用于.exe,而不是额外的远程工作,并像在第一跳上一样运行.exe。