【问题标题】:Convert Powershell to exe with parameters将Powershell转换为带参数的exe
【发布时间】: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


【解决方案1】:

我找到了解决方案,现在我正在使用这个脚本

param(
[string]$driveletter,
[string]$fullpath,
[string]$username,
[string]$password)

$net = new-object -ComObject WScript.Network

$net.MapNetworkDrive($driveletter, $fullpath, $false, $username, $password)

我将其转换为 .exe 这工作正常。 .exe 使用以下“参数”

run.exe "P:" "\\192.168.1.120\share" "administrator" "test123"

布尔值的转换存在一些问题。但是,它现在按我想要的方式工作。

【讨论】:

    猜你喜欢
    • 2021-05-23
    • 1970-01-01
    • 2022-09-28
    • 2016-11-19
    • 2013-07-19
    • 1970-01-01
    • 2020-04-04
    • 2020-09-22
    • 2018-06-26
    相关资源
    最近更新 更多