小编Gab*_*beA的帖子

Powershell调用使用App.config的.NET程序集

我有一个Powershell脚本,它正在加载.NET程序集(在我的例子中是.EXE)并调用一个公共方法,该方法使用app.config来提取加密的连接字符串.

该脚本将程序集的exe.config动态复制到Powershell($ pshome)文件夹作为powershell.exe.config,并且能够从我的开发框运行就好了.问题是它不能从标准的Windows Server 2003安装运行.

我验证了exe.config正在被正确复制到powershell目录.我运行了SysInternals Process Explorer并验证了该进程正在访问配置文件(没有找到文件的消息).我远程调试的powershell.exe实例,可以看到该组件加载罚款,但不能访问ConfigurationManager.AppSettings [...]值(返回null).

我没有想法.我已经读过,我可能可以使用单独的应用程序域,但我看不到使用Powershell执行此操作的示例.

我的代码对以下内容产生了影响:

$absolute_path = "c:\foo.exe"
$config_path = $absolute_path + ".config"
copy "$config_path" "$pshome\powershell.exe.config" -Force
[Reflection.Assembly]::LoadFrom($absolute_path)
$foo = new-object MyFooAssembly.FooClass
$foo.DoSomething()  
Run Code Online (Sandbox Code Playgroud)

在Vista中代码可以工作,在Windows Server 2003中,代码不起作用.

.net powershell app-config

20
推荐指数
2
解决办法
1万
查看次数

Powershell命令处理(传入变量)

我正在创建一个Powershell脚本来部署一些代码,部分过程是调用一个名为RAR.EXE的命令行压缩工具来备份一些文件夹.

我正在尝试动态构建参数,然后让PowerShell用变量调用命令但是我遇到了麻烦.它不起作用......

运行以下脚本,你应该看到我在说什么.作为变量传入的参数正在被破坏.如果我传递整个命令+参数,我得到臭名昭着的"不被识别为cmdlet ..."的消息.

谢谢你的帮助!

echo "this should succeed"
& cmd /c echo foo

echo "why does this echo out an additional double quote?"
$param = "/c echo foo"
& cmd "$param"

echo "this does the same"
$param = "/c echo foo"
& cmd $param

echo "escaping the slash doesn't work either..."
$param = "`/c echo foo"
& cmd $param

echo "this fails, but why?"
$cmd = "cmd /c echo foo"
&$cmd
Run Code Online (Sandbox Code Playgroud)

parameters powershell command-line command arguments

7
推荐指数
3
解决办法
3万
查看次数