Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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未从C#返回任何内容,相同的代码在ps提示符下运行,\r\n';删除_C#_Powershell - Fatal编程技术网

Powershell未从C#返回任何内容,相同的代码在ps提示符下运行,\r\n';删除

Powershell未从C#返回任何内容,相同的代码在ps提示符下运行,\r\n';删除,c#,powershell,C#,Powershell,该代码添加在PSSnapin和PSSession代码之间,然后调用: string cmd = " $srv = new-object Microsoft.SqlServer.Management.Smo.Server('" + svr + "')" + Environment.NewLine; cmd += " $srv.Logins | where-object {$_.Name -eq 'DOMAIN\server55' } | select-object 'State'" + Envi

该代码添加在PSSnapin和PSSession代码之间,然后调用:

string cmd = " $srv = new-object Microsoft.SqlServer.Management.Smo.Server('" + svr + "')" + Environment.NewLine;

cmd += " $srv.Logins | where-object {$_.Name -eq 'DOMAIN\server55' } | select-object 'State'" + Environment.NewLine;

感谢您提供的任何线索,我在使用嵌套引号时遇到了问题,但我能够获得其中的大部分,因此我认为这是从代码中的\r\n中得到的,但不确定如何找到答案,我无法从应用程序返回结果,但整个脚本通过ps提示符运行良好。

问题可能是在远程端加载管理单元吗

你有:

$hasSnapin = get-pssnapin | Select { $_.Name.toLower().Trim() = 'sqlservercmdletsnapin100' }
if ($hasSnapin -eq $null) { Add-Pssnapin SqlServerCmdletSnapin100 }
$pssessSql = New-PSSession -ComputerName Server54
Invoke-Command -session $pssessSql -ScriptBlock {
sqlps -nologo -noprofile -command {
$srv = new-object Microsoft.SqlServer.Management.Smo.Server('Server54')
$srv.Logins | where-object {$_.Name -like 'DOMAIN\Server55$' } | select-object 'State' }
 }
 Remove-PSSession -Session $pssessSql
 exit
这意味着准备代码被第二次赋值完全忽略/覆盖。 一种替代方法是无条件地添加管理单元,指定希望忽略错误

cmd = prep;
cmd = "$pssessSql ...";

找到它,代码很好,但是我使用了格式,当我评论说我能够得到我的结果时。在此之前,它返回格式化对象,但我无法从中获取值。。。很高兴我没有:

Add-Pssnapin -ErrorAction SilentlyContinue SqlServerCmdletSnapin100

Get-PSSnapin
采用一个
-name
参数,该参数采用区分大小写的通配符。因此,您可以将
get-pssnapin | select…
替换为
get-pssnapin-name sqlserver*100
。感谢Stephen,在帖子之间捕捉到了这一点,但可能没有那么感谢您发现它。
Add-Pssnapin -ErrorAction SilentlyContinue SqlServerCmdletSnapin100
query += "\r\n" + "$data = $cmdCheckLogin.ExecuteReader()";
query += "\r\n" + "$dt = new-object System.Data.DataTable";
query += "\r\n" + "$dt.Load($data)";
query += "\r\n" + "$dt";    // | format-table -hidetableheaders";
query += "\r\n" + "$conn.Close()";