服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

通过WinRM远程运行PowerShell脚本时获取Windows文件共享的本地path

我有一个Windows批处理脚本,将EXE或batch file复制到远程文件共享,并使用PowerShell WinRM在远程服务器上运行它。 远程运行该命令的行如下所示: ECHO Invoke-Command -Authentication CredSSP -Credential %USERDOMAIN%\%USERNAME% -ComputerName %SERVER_NAME% -ScriptBlock { cd (gwmi Win32_Share -Filter "name='%SHARE_NAME%'").Path ; .\%MY_EXE_TO_RUN% } |PowerShell.exe -Command – 我需要将当前目录更改为要运行的EXE /batch file所在的文件共享目录(它依赖于此目录)。 它也必须是一个本地目录 – 如果我尝试使用CD \\%SERVER_NAME%\%SHARE_NAME%这可以用于EXE,但是对于batch file将失败,cmd.exe不支持将UNCpath作为当前目录。 但是,我也不想在脚本中硬编码共享的本地path,所以我试图在WMI中查找它。 这对pipe理员工作正常,但对于拒绝访问错误的非pipe理员失败。 这些非pipe理员用户可以将RDP发送到服务器,打开PowerShell并在那里成功运行gwmi Win32_Share 。 因此,通过WinRM运行时,权限检查似乎有点不同! 我发现http://www.adilhindistan.com/2013/10/permissions-to-access-wmi-remotely.html,但在许多服务器上看起来相当复杂。 除此之外,我不需要远程WMI访问。 也许还有另一种方式来解决这个份额的本地path? 或者,也可以以某种方式运行WMI查询并对其应用本地权限检查? 毕竟,我已经在远程服务器上的代码,所以应该有一些方法来做到这一点。