本地网络包含几个文件服务器,每个服务器都有多个共享。
我想获取给定主机的完整递归目录列表。不幸的是,dir /S /B \\servername
这行不通。
我必须dir /S /B \\servername\share
分别对每一股股票进行叫价。
有没有更简单的方法?
如果目录没有访问权限,则该过程也不应该停止或中止。
答案1
此 PowerShell 单行命令将列出指定计算机的所有共享,并列出每个共享的所有文件:
foreach($Share in Get-WmiObject Win32_Share -ComputerName 'COMPUTER') {Get-ChildItem "\\$($Share.__SERVER)\$($Share.Name)"}
您可以从命令提示符(cmd)或批处理(.bat
)调用它,如下所示:
powershell "foreach($Share in Get-WmiObject Win32_Share -ComputerName 'COMPUTER') {Get-ChildItem "\\$($Share.__SERVER)\$($Share.Name)"}" >\path\outfile.txt
编辑
对于查询非 Windows 服务器,问题在于上述操作需要不可用的 RPC 服务器。
您可以尝试使用 WMIC。在 PowerShell 命令提示符中为这样的一个 Linux 服务器输入以下两行:
$allshares = (net view \\SERVER) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] }}
foreach ($Share in $allshares) {Get-ChildItem "\\SERVER\\$Share"}
答案2
通过资源管理器打开包含共享的文件夹。按住 Shift 并右键单击。选择在此处打开 powershell 或 cmd,然后输入:dir > textfile.txt
答案3
创建名为C:\Folders.txt
在 Powershell 中运行此命令:
Get-ChildItem "\\192.168.2.4\Home" -Recurse -Name -Directory | Out-File "C:\Folders.txt"