Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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
C# 在powershell单行脚本中使用测试连接返回目录内容_C#_Powershell - Fatal编程技术网

C# 在powershell单行脚本中使用测试连接返回目录内容

C# 在powershell单行脚本中使用测试连接返回目录内容,c#,powershell,C#,Powershell,我最初编写了一个脚本,通过文本文件输入计算机名称,然后在一组路径中检查每个名称的子文件夹名称。该脚本工作得很好,但我想添加一个检查,以仅检查联机的计算机。我尝试过的每个测试连接方法最终都会将错误的值(或多余的值)传递到路径名中的$\uu变量中 我之所以尝试将其保留为一行脚本,是为了避免必须更改PowerShell执行策略(这将在不同的机器上运行,而不是每次都在同一台机器上运行) 下面是我目前编写的代码。我曾想过简单地把它转换成C#,我想知道是否有人能通过这样做想到任何负面的东西 Get-Cont

我最初编写了一个脚本,通过文本文件输入计算机名称,然后在一组路径中检查每个名称的子文件夹名称。该脚本工作得很好,但我想添加一个检查,以仅检查联机的计算机。我尝试过的每个
测试连接方法
最终都会将错误的值(或多余的值)传递到路径名中的
$\uu
变量中

我之所以尝试将其保留为一行脚本,是为了避免必须更改PowerShell执行策略(这将在不同的机器上运行,而不是每次都在同一台机器上运行)

下面是我目前编写的代码。我曾想过简单地把它转换成C#,我想知道是否有人能通过这样做想到任何负面的东西

Get-Content c:\temp\serverlist.txt |
  Select-Object @{Name='ComputerName';Expression={$_}},
                @{Name='PROD XP Version';Expression={
                  Get-ChildItem -Path "\\$_\c$\Program Files (x86)\MyProgram",
                    "\\$_\c$\Program Files\MyProgam",
                    "\\$_\c$\Program Files (x86)\MyProgramTestFolder",
                    "\\$_\c$\Program Files\MyProgramTestFolder"
                }} > c:\temp\testVersions.txt
编辑:我最近一次尝试的代码是:

Test-Connection -Count 1 -ComputerName (Get-Content C:\temp\serverlist.txt) |
  Select-Object @{Name='ComputerName';Expression={$_}},
                @{Name='PROD XP Version';Expression={
                  Get-ChildItem -Path "\\$_\c$\Program Files (x86)\MyProgram",
                    "\\$_\c$\Program Files\MyProgam",
                    "\\$_\c$\Program Files (x86)\MyProgramTestFolder",
                    "\\$_\c$\Program Files\MyProgramTestFolder"
                }} > c:\temp\testVersions.txt
这适用于正确列出名称,但在检查路径时,会将一长串数据传递到
$\uu
。我试图将路径中的
$\u
更改为
$\uAddress
,但没有效果


如果不使用
.address
我将获得
\\BEN-ACH-LAP\root\cimv2:Win32\u PingStatus.address=“BEN-ACH-LAP”,BufferSize=…
作为我的第一个计算机名,这就是路径无法正常工作的原因,因为很明显,这不是一个有效的PC名称。

您想筛选网络上可用的主机列表。为此,您需要在
Where Object
过滤器中运行
测试连接

Get-Content c:\temp\serverlist.txt |
  Where-Object { Test-Connection -Computer $_ -Count 1 -Quiet } |
  Select-Object ...

这将仅将那些主机名/地址传递给响应ICMP请求的
选择对象。

对此表示抱歉-澄清了一些并添加了第二个代码块。使用
-Quiet
开关进行
测试连接。然后,您可以使用if语句返回的True或False。我已经确认它应该与原始代码一起工作,OP。只需删除您的测试连接语句并替换为Ansgar的。绝对完美,我正在寻找的-谢谢!!!!!!!你们两个-我就是这么做的,福克斯