我正在编写一个简单的函数,以列出特定服务器共享的子文件夹。我的问题是我想要在同一个自定义对象数组中的所有信息。这是我做的:
function Get-tDollar {
param(
[string]$srv
)
$share = Get-WmiObject -ComputerName $srv -Class Win32_Share -Filter "Name='share`$'" | Select __SERVER,@{n="nPath";e={"\\" + $_.__SERVER + ($_.Path -replace "C:")}}
$inc = 0
Get-ChildItem $share.nPath | % {
$inc++
Add-Member -InputObject $share -MemberType NoteProperty -Name "folder_$inc" -Value $_.Name
}
$share
}
我使用这个函数:@("srv1","srv2") | % { Get-TDollar -srv $_ }
当子文件夹的数量相同时,一切正常,但是当它们不同时,该数组仅包含第一个共享中列出的文件夹数。例如,对于我的两个第一台服务器,我有这个输出:
__SERVER nPath folder_1
-------- ----- ------------
srv1 \\srv1\share scripts
srv2 \\srv2\share scripts
但是,因为srv2的文件夹比第一台服务器多,所以我想要这个输出:
__SERVER nPath repertoire_1 repertoire_2
-------- ----- ------------ ------------
srv1 \\srv1\share scripts
srv2 \\srv2\share scripts config
我知道我可以先计算出哪个服务器的文件夹数量较多,然后将其置于fisrt位置,但似乎有足够的线路用于这样的事情。是否有更有效/更优雅的方式来做到这一点?
答案 0 :(得分:1)
你被默认格式化gremlin:
所困扰http://blogs.msdn.com/b/powershell/archive/2006/04/30/586973.aspx
Get-tDollar |
foreach { $_ | format-table }