PowerShell 查找用户主目录中的文件数
PowerShell find number of files in users homedirectory
我正在尝试编写一个 PowerShell 脚本来提取 Active Directory 中每个用户主目录的文件数。我想出了以下脚本,但它实际上并没有获取文件数,我的文件数对于每个用户都是 0。我在表达式中错过了什么?我试过 % 代替 ?我尝试添加!在 $_ 前面,结果不正确。
Get-ADUser -Filter * -properties * -SearchBase "OU=Information Technology,`
OU=User Accounts,DC=net,DC=local" | ft name, homedirectory, homedrive,`
@{Name='Files'; Expression={(Get-ChildItem -Recurse -Force -ErrorAction Ignore`
| ?{$_.HomeDirectory}).count}} -A
作为 ,您需要提供 $_.HomeDirectory
作为 Get-ChildItem
的参数。
要避免 运行 Get-ChildItem
当 HomeDirectory
属性为空或不存在时,您可以在表达式中放置 if
语句(拆分为多个此处的可读性声明):
$ITUsers = Get-ADUser -Filter * -properties homedirectory,homedrive -SearchBase "OU=Information Technology,OU=User Accounts,DC=net,DC=local"
$ITUsers |Format-Table name, homedirectory, homedrive,@{Name='Files'; Expression={
if(Test-Path $_.homedirectory){
@(Get-ChildItem $_.homedirectory -Recurse -Force -ErrorAction Ignore).Count
}
else {
0
}
} -AutoSize
我正在尝试编写一个 PowerShell 脚本来提取 Active Directory 中每个用户主目录的文件数。我想出了以下脚本,但它实际上并没有获取文件数,我的文件数对于每个用户都是 0。我在表达式中错过了什么?我试过 % 代替 ?我尝试添加!在 $_ 前面,结果不正确。
Get-ADUser -Filter * -properties * -SearchBase "OU=Information Technology,`
OU=User Accounts,DC=net,DC=local" | ft name, homedirectory, homedrive,`
@{Name='Files'; Expression={(Get-ChildItem -Recurse -Force -ErrorAction Ignore`
| ?{$_.HomeDirectory}).count}} -A
作为 $_.HomeDirectory
作为 Get-ChildItem
的参数。
要避免 运行 Get-ChildItem
当 HomeDirectory
属性为空或不存在时,您可以在表达式中放置 if
语句(拆分为多个此处的可读性声明):
$ITUsers = Get-ADUser -Filter * -properties homedirectory,homedrive -SearchBase "OU=Information Technology,OU=User Accounts,DC=net,DC=local"
$ITUsers |Format-Table name, homedirectory, homedrive,@{Name='Files'; Expression={
if(Test-Path $_.homedirectory){
@(Get-ChildItem $_.homedirectory -Recurse -Force -ErrorAction Ignore).Count
}
else {
0
}
} -AutoSize