Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell特殊字符/自动生成-PSRemoting_Powershell_Powershell Remoting - Fatal编程技术网

Powershell特殊字符/自动生成-PSRemoting

Powershell特殊字符/自动生成-PSRemoting,powershell,powershell-remoting,Powershell,Powershell Remoting,我正在使用Teamcity和Powershell自动化一些构建。Teamcity在帐户A下运行。在帐户B下需要运行的可执行文件很少。帐户B可以访问DB(windows auth集成安全访问),并且需要在安装时创建一些表。帐户B的密码保存在文本文件中。我对此没有什么问题 1) 帐户B可以有任何特殊字符。我正在读取XML文件(因为该文件可以保存在只有帐户a有权访问的位置)和新的PSCredential来执行PSRemoting。我用的是 $secpasswd = ConvertTo-SecureSt

我正在使用Teamcity和Powershell自动化一些构建。Teamcity在帐户A下运行。在帐户B下需要运行的可执行文件很少。帐户B可以访问DB(windows auth集成安全访问),并且需要在安装时创建一些表。帐户B的密码保存在文本文件中。我对此没有什么问题

1) 帐户B可以有任何特殊字符。我正在读取XML文件(因为该文件可以保存在只有帐户a有权访问的位置)和新的PSCredential来执行PSRemoting。我用的是

$secpasswd = ConvertTo-SecureString $passwordFromXMLFile -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("username", $secpasswd)
$PasswordFromXMLFile可以有任何特殊字符。我该如何处理这件事

2) 当我尝试在帐户B的上下文中运行可执行文件时(在我以某种方式使用此帐户转义和连接之后),我看到可执行文件在匿名帐户下运行,而不是在domainname\B帐户下运行。是否有一些设置,我需要确保它在帐户B下运行

我的代码看起来有点像-这不是我只是提取一些相关部分的确切代码

$secpasswd = ConvertTo-SecureString $passwordFromXMLFile -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("B", $secpasswd)
$session = New-PSSession -ComputerName $serverName -Credential $mycreds
我看会议进行得很顺利。到计算机
$scriptblock = {
    Start-Process $exeName $arguments - wait
}
invoke-command -session $session -scriptblock  $scriptblock

想法?启动进程运行,但它是在匿名权限而不是帐户B上执行的。

尝试将启动进程调用替换为
whoami
,看看您是否作为帐户B运行了那么久。我想我们需要更多详细信息。首先,我不确定特殊字符在密码部分会有什么不同。这里有错误吗?另外,我已经对此进行了测试,会话本身和进程都以帐户B启动。当你说它是在匿名授权上运行时,这意味着什么?你是怎么决定的?你要开始什么过程?你有没有用记事本之类的简单工具进行过测试?如果密码有特殊字符($或其他不受支持的ps字符)符号,那么从xml中读取密码并将其放入$secpasswd中是不可行的。我一直在teamcity进行测试,因为部署需要在那里进行——我会回去做whoami测试,然后回来。正在运行的控制台应用程序将尝试使用windows auth在SQL中创建一些视图,但它无法说出nAuthority\anonymous user。把whoami放进去后我会回来的。你的XML读得怎么样?我运行了一个测试,它用@和$都很好地完成了测试。我还测试了whoami步骤,它似乎也能正常工作。Tim Ferill/Keith Hill,我终于做到了。看起来@和$有问题,我使用了启动进程,然后转到system.diagnostics.process。当我运行whoamI时,我确实看到输出了正确的帐户B。但是,当我使用Start process或invoke Expression或System.Diagnostics.process运行需要在此帐户下运行的进程时,我仍然获得SQL Nauthority\Anonymous user。当我为diagnostics.processinfo设置用户名、域和密码时,我遇到了一个异常,调用带有“0”参数的“开始”:“访问被拒绝”。这可能是因为提升了用户权限