【发布时间】:2017-08-22 19:24:24
【问题描述】:
我有一个如下所示的 powershell 脚本:
param(
[string]$fullpath,
[string]$username,
[string]$password,
[string]$driveletter = "P:",
[bool]$storedrive = $False)
$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive($driveletter, $fullpath, $storedrive, $username, $password)
我尝试使用PS2EXE 将其转换为可执行文件,效果很好。
如果我尝试使用 name.exe -fullpath "\\192.168.1.120\share" -username "administrator" -password "test123" 运行 .exe,我会收到错误消息 Networkname not found
如果我将以下代码编译为可执行文件
param(
[string]$fullpath = "\\192.168.1.120\share",
[string]$username = "administrator",
[string]$password ="test123",
[string]$driveletter = "P:",
[bool]$storedrive = $False)
$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive($driveletter, $fullpath, $storedrive, $username, $password)
...并运行 .exe - 它可以工作,我得到资源管理器中显示的网络驱动器....
任何想法为什么这不起作用?
问候 马库斯
【问题讨论】:
-
看起来参数有问题。尝试将
write-host添加到非工作版本以显示传递给MapNetworkDrive的参数集。输出看起来合理吗? -
当我尝试添加 'write-host "$net.MapNetworkDrive($driveletter, $fullpath, $storedrive, $username, $password)"' 并将其编译为 exe 时,它什么也没显示...当我在 powershell 中运行它时,它工作正常,我得到了打印输出
-
而不是
Write-Host "$net.MapNetworkDrive(...)",尝试更简单的Write-Host "fullpath=$fullpath; username=$username; password=$password; driveletter=$driveletter; storedrive=$storedrive"- 您要确保您传递的参数在EXE中正确分配。
标签: windows powershell networking exe