You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell远程脚本中cd C:命令无法执行问题求助

问题原因分析
  • Enter-PSSession 会启动一个交互式远程会话,此时脚本执行会暂停,直到你退出该会话(执行Exit-PSSession)。因此你写在它后面的Invoke-Command不会在这个交互式会话里执行,而是等你退出后才运行,且Invoke-Command会单独创建新的远程会话执行脚本块。
  • 另外,cd C: 在Invoke-Command的脚本块中执行时,仅切换了该临时会话的当前目录,但会话执行完毕就会销毁,你看不到持久效果——要验证切换是否成功,需在同一个脚本块里后续执行相关命令(比如Get-Location查看当前路径)。
解决方案

方案1:交互式会话手动操作

若需要进入远程机器的交互式环境手动执行命令,保留Enter-PSSession部分,进入会话后直接在控制台输入cd C:即可:

Enable-PSRemoting -Force
$password = ConvertTo-SecureString "xxxxxxxxx" -AsPlainText -Force
$username = "NE\a_chermes2"
$Cred = New-Object System.Management.Automation.PSCredential ($username, $password)
Enter-PSSession -ComputerName NESCH11 -Credential $cred
# 进入会话后手动输入 cd C: 执行

方案2:用Invoke-Command自动执行远程命令

若要通过脚本自动执行远程命令(包括切换目录后的操作),无需Enter-PSSession,直接把所有命令放在同一个Invoke-Command脚本块中:

Enable-PSRemoting -Force
$password = ConvertTo-SecureString "xxxxxxxxx" -AsPlainText -Force
$username = "NE\a_chermes2"
$Cred = New-Object System.Management.Automation.PSCredential ($username, $password)
Invoke-Command -ComputerName NESCH11 -Credential $cred -ScriptBlock {
    cd C:
    Get-Location  # 验证当前目录是否切换成功
    # 这里可添加后续需要执行的命令
}

额外提示

  • 不要混合使用Enter-PSSession和Invoke-Command,两者场景不同:前者用于交互式操作,后者用于自动化批量执行远程命令。
  • 若远程机器PowerShell默认目录不符合需求,可在Invoke-Command里用Set-Location(cd是它的别名),且确保后续命令在同一个脚本块中执行,才能基于切换后的目录操作。

内容的提问来源于stack exchange,提问作者Hermes1160

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:52:12