排除Get-ChildItem中的连接点

时间:2018-03-13 07:17:32

标签: powershell get-childitem junction

我想获取C:\驱动器中所有用户创建的文件夹的列表。但是由于连接点,我得到了错误的结果。 我试过了

$generalExclude += @("Users", "LocalData", "PerfLogs", "Program Files", "Program Files (x86)", "ProgramData", "sysdat", "Windows", "eplatform", "Intel", "Recovery",  "OneDriveTemp")

Get-ChildItem "\\localhost\c$" -Directory -force -Exclude $generalExclude -ErrorAction 'silentlycontinue' | Where-Object $_.Attributes.ToString() -NotLike "ReparsePoint"

但我得到了

  

您无法在空值表达式错误上调用方法。

1 个答案:

答案 0 :(得分:2)

我猜您错过了<html> <head> <link rel="stylesheet" href="style.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.js"></script> </head> <body> <div ng-app="myShoppingList" ng-controller="myCtrl"> <input type="number" ng-model="eorE"> <input type="number" ng-model="float"> <input type="number" ng-model="plus"> <input type="number" ng-model="mins"> <p>{{addMe}}</p> </body> </html> cmdlet中braces{}的{​​{1}}。此外,scriptblock运算符使用通配符进行搜索操作。

Where-Object

根据-notlike cmdlet的msdn文档,您将看到有两种方法可以构建Where-Object命令。

方法1

  

脚本块

     

您可以使用脚本块指定属性名称,即比较   运算符和属性值。 Where-Object返回所有对象   脚本块语句为真。

     

例如,以下命令获取Normal中的进程   优先级,即进程所在的值   PriorityClass属性等于Normal。

Get-ChildItem "\\localhost\c$" -Directory -force -Exclude $generalExclude -erroraction 'silentlycontinue' | Where-Object {$_.Attributes.ToString() -NotLike "*ReparsePoint*"}

方法2

  

比较声明

     

你也可以写一个比较语句,更像是   自然语言。比较语句在Windows中引入   PowerShell 3.0。

     

例如,以下命令也会获得具有的进程   普通优先级。这些命令是等效的,可以   可互换使用。

Where-Object

其他信息 -

  

从Windows PowerShell 3.0开始,Where-Object添加比较   运算符作为Where-Object命令中的参数。除非另有说明   所有运算符都不区分大小写。在Windows PowerShell 3.0之前,   Windows PowerShell语言中的比较运算符可以是   仅在脚本块中使用。

在您的情况下,您将Get-Process | Where-Object {$_.PriorityClass -eq "Normal"} 构建为Get-Process | Where-Object -Property PriorityClass -eq -Value "Normal" Get-Process | Where-Object PriorityClass -eq "Normal" ,因此Where-Object成为必要的邪恶。或者,您可以通过以下方式构建scriptblock -

braces{}

<强>(OR)

Where-Object