我正在尝试通过powershell远程启动xxx.exe-参数,xxx.exe将加载/映射自定义的localization.xml(需要将localization.xml和xxx.exe放在同一文件夹中)并显示其相关名称。预期输出如下:
Description : [0076] HP 534M DP Virtual Bus Device #76
Link Type : iSCSI
Link State : Down
MAC/WWN : 2C-44-FD-8D-72-3D
PF Number : 1
Description : [0073] HP 534M DP Virtual Bus Device #73
Link Type : Ethernet
Link State : Down
MAC/WWN : 2C-44-FD-8D-72-3C
如果我只是在远程上运行它,它会很好
Invoke-Command -ScriptBlock {& "C:pathxxx.exe" -showadapter}
但是如果我远程运行xxx.cli ,它就无法映射localizaon.xml
param([String]$IP, [String]$Username, [String]$Password)
$secpwd = ConvertTo-SecureString $Password -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($Username,$secpwd)
$session = New-PSSession -ComputerName $IP -Credential $cred
Invoke-Command -Session $session{& "C:pathxxx.exe" -showadapter}
其输出为
No localization entry - : [0076] HP 534M DP Virtual Bus Device #76
No localization entry - : iSCSI
No localization entry - : Down
No localization entry - : 2C-44-FD-8D-72-3D
No localization entry - : 1
No localization entry - : [0073] HP 534M DP Virtual Bus Device #73
No localization entry - : Ethernet
No localization entry - : Down
No localization entry - : 2C-44-FD-8D-72-3C
localization.xml的部分内容类似
<?xml version="1.0" encoding="SHiFT-JIS"?>
<localization>
<usermessage id ="0x0001" message = "Description"/>
<usermessage id ="0x0002" message = "Link Type"/>
...
<localization>
我很困惑为什么如果我在远程运行xxx.cli,它可以自动映射/加载localization.xml,但一旦我远程运行它,它就无法映射。
有什么提示/解决方案吗?
非常感谢!!
如果我理解正确,您的程序正试图从程序所在的同一目录加载XML。基于此,在远程会话中,脚本块似乎是从不同的工作目录执行的。
我不确定你的自定义程序是怎么写的。例如,它是识别执行它的完整路径,还是使用相对路径,所以我会先尝试更改到该目录,然后执行你的程序:
Invoke-Command -Session $session {cd C:path; & .xxx.exe -showadapter}