如何解决Powershell-查找网络共享上的所有扩展
我是PS脚本的新手(真的,我是今天开始的),对于一个项目,我需要创建一个.txt文件,其中包含本地计算机(Windows文件服务器)上所有共享文件夹的所有扩展名。
我认为我在正确的道路上:
get-childitem -Path C:\test -Recurse | select extension -unique > $PSScriptRoot\ExtensionList.txt
对于给定的路径和所有子文件夹,它确实可以满足我的要求,但是现在我需要将其应用于计算机上的所有共享文件夹。
我可以使用以下命令列出所有共享文件夹的路径:
$Shares= @(Get-WmiObject Win32_Share |
Select Name,Path,Type |
Where-Object { $_.Type -match '0|2147483648' } |
Select -ExpandProperty Path |
Select -Unique)
Write-Host $Shares
现在我被困住了,我想我需要使用foreach命令,但是我找不到使它工作的方法。
有人可以帮我把这些放在一起吗?
谢谢
解决方法
您可能正在寻找类似的东西:
$Shares = @( Get-CimInstance Win32_Share | Where-Object { $_.Type -match '0|2147483648' } | Select -Unique )
ForEach ( $Share In $Shares ) { Get-ChildItem -Path $Share.Path -File -Recurse -ErrorAction Ignore | Select -Unique -ExpandProperty Extension }
我将留给您分割线以匹配您的特定样式并输出到文件,(建议您考虑使用Out-File
代替>
)。
您可以尝试Get-SMBShare
cmdLet:
Get-SMBShare | Foreach {
Get-ChildItem "\\$($_.name)" | Select-Object Extension -Unique
}
,
谢谢你们的帮助!我能够弄清楚。
以下脚本将收集共享文件夹上的所有扩展名,对其进行排序,消除重复和空白行,在扩展名前添加“ *”,并创建包含结果的文件list.txt。
#get shares
$Shares = @( Get-CimInstance Win32_Share |
Where-Object { $_.Type -match '0|2147483648' } |
Select -Unique )
#list all extensions
ForEach ( $Share In $Shares ) { Get-ChildItem -Path $Share.Path -File -Recurse -ErrorAction Ignore | Select -Unique -ExpandProperty Extension | out-file C:\extensions\List1.txt -append }
#remove empty lines
@(gc C:\extensions\List1.txt) -match '\S' | out-file C:\extensions\List2.txt
#Add * before extention type
gc C:\extensions\List2.txt | %{"*$_"} | out-file C:\extensions\List3.txt
#Sort by name
gc C:\extensions\List3.txt | sort | get-unique > C:\extensions\List4.txt
#Remove duplicates
$hash = @{}
gc C:\extensions\List4.txt |
%{if($hash.$_ -eq $null) { $_ }; $hash.$_ = 1} > C:\extensions\List.txt
#Delete list1-4
Remove-Item C:\extensions\List1.txt,C:\extensions\List2.txt,C:\extensions\List3.txt,C:\extensions\List4.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。