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

获取远程用户网络打印机时注册表路径用SID变量报错如何解决?

问题根源

你遇到的报错是因为PowerShell 远程会话的变量作用域隔离规则:你在本地定义的$stringSID变量默认无法在Invoke-Command的远程脚本块中直接访问,脚本块运行时$stringSID为空值,最终拼接出的注册表路径缺少了SID段,才会提示路径不存在。

解决方法

有两种常用的传参方案可选:


方案1:使用$using:作用域标记(推荐,适用于PowerShell 3.0及以上版本)

直接在远程脚本块中引用本地变量时,加上$using:前缀即可,修改你的Invoke-Command部分代码如下:

Invoke-Command -Session $Session -ScriptBlock  { 
    Get-ChildItem "Registry::\HKEY_Users\$using:stringSID\Printers\Connections"
}

方案2:通过-ArgumentList显式传参(兼容PowerShell 2.0)

如果远程机器运行的是PowerShell 2.0版本,没有$using语法支持,可以用参数传递的方式把SID传入远程会话:

Invoke-Command -Session $Session -ScriptBlock  { 
    # 接收传入的参数
    param($remoteSID)
    Get-ChildItem "Registry::\HKEY_Users\$remoteSID\Printers\Connections"
} -ArgumentList $stringSID

额外注意事项

如果修改后还是提示路径不存在,先确认目标远程机器上对应用户已经登录过(未登录过的用户SID不会加载到HKEY_USERS根路径下),如果用户当前未登录,需要先加载用户的NTUSER.DAT配置单元到注册表再查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:09:04