Powershell格式化

Powershell格式化,powershell,Powershell,我对powershell非常陌生,一直在尝试各种方法来分割我找到的以下powershell脚本的结果,但运气不佳。目前,脚本在4列中列出了所有内容,每个服务器的结果之间没有间隔。 (当它完成一个服务器的结果时,我希望在每个结果之间有一个间隙,甚至是一个带有服务器名称的标题,以便在多个服务器上运行时更易于阅读) 如果您能帮我格式化,我们将不胜感激 Get-WmiObject -ComputerName ("server1","server2") Win32_UserProfile | % {

我对powershell非常陌生,一直在尝试各种方法来分割我找到的以下powershell脚本的结果,但运气不佳。目前,脚本在4列中列出了所有内容,每个服务器的结果之间没有间隔。 (当它完成一个服务器的结果时,我希望在每个结果之间有一个间隙,甚至是一个带有服务器名称的标题,以便在多个服务器上运行时更易于阅读) 如果您能帮我格式化,我们将不胜感激

  Get-WmiObject -ComputerName ("server1","server2") Win32_UserProfile | % {
  $userinfo = [WMI] ($_.__Path -Replace "Win32_UserProfile", "Win32_SID")
  New-Object PsObject -Property @{
  ComputerName= $_.__Server 
  Domain      = $userinfo.ReferencedDomainName
  User        = $userinfo.AccountName
  LastUsed    = $_.ConvertToDatetime($_.LastUseTime)

 }
 } | export-csv -NoType c:\Results.csv
这就是我要做的

server 1
user    lastModified    
bob     8/20/14 
billy   7/20/14    
Carla   6/12/14

server 2
user    lastModified 
bob     8/20/14 
billy   7/20/14    
Carla   6/12/14

server 3
user    lastModified 
bob     8/20/14 
billy   7/20/14    
Carla   6/12/14
这就是我目前得到的

lastUsed   user   computername
8/20/14    bob    server 1
6/20/14    billy  server 1
9/1/14     sam    server 3
3/2/14     sonny  server 4
所以,当你把50个60个档案都堆成这样的时候,它几乎是不可读的,特别是如果你试着按日期排序,因为那时服务器到处都是

每次运行脚本时,我都会遇到这个错误,尽管我仍然会得到结果,脚本会产生它应该产生的结果

使用“1”参数调用“ConvertToDateTime”时发生异常:“使用“1”参数调用“ToDateTime”时发生异常):“指定的参数超出有效值的范围。 参数名称:dmtfDate“” 第13行字符:33 +$.ConvertToDatetime 我在尝试获取
导出Csv
以尝试重复标题时遇到了一个真正的问题。简单的方法是通过将
Export Csv
移动到
ForEach对象的管道输出中来执行多个调用。但是,
Export Csv
没有一个
-stoppeinghelp
开关,这意味着无论我做了什么,它都会注意到标题已经在那里,并且觉得没有必要重复它。由于您要求的不是真正的csv文件输出,因此我使用
添加内容
轻松多了。这里发生了什么

  • 我将您的计算机放入名为
    $computers
  • 您的
    getwmiobject
    循环基本上是相同的,我没有创建
    customPSObject
    而是创建了一个简单的数组。这也是为了阻止PowerShell对其进行特殊处理。实际上,创建一个
    CustomPSObject
    将其转换为一个数组以导出它似乎是毫无意义的
  • csv部分来自
    -join
    我获取数组并用逗号将它们连接起来以创建csv输出。在每次循环运行期间,向下放置一个标题,其中一行包含计算机名称,下一行包含标题。WMI数据如下。在循环之间插入一条空行,以便像样本中那样进行分离
  • “采样”会忽略正在收集的某些数据。我输出所有数据,但您可以更改
    $header
    和数组内容以满足您的需要 一些示例输出如下所示:

    kanimage02
    Computer,Domain,User,LastUsed
    KANIMAGE02,NT AUTHORITY,NETWORK SERVICE,9/11/2014 10:25:19 AM
    KANIMAGE02,NT AUTHORITY,LOCAL SERVICE,9/11/2014 10:25:24 AM
    KANIMAGE02,NT AUTHORITY,SYSTEM,2/22/2011 12:07:14 PM
    
    kanantivirus01
    Computer,Domain,User,LastUsed
    KANANTIVIRUS01,NT AUTHORITY,NETWORK SERVICE,9/10/2014 3:19:03 AM
    KANANTIVIRUS01,NT AUTHORITY,LOCAL SERVICE,9/10/2014 3:19:08 AM
    KANANTIVIRUS01,NT AUTHORITY,SYSTEM,2/22/2011 12:07:14 PM
    

    请注意,在此过程中,我不会清除文件。如果它已经包含内容,则将全部追加

    如果你给我们看你想要的产量,那就容易多了。否则,社区可能会误解您正在寻找的内容,并浪费每个人的时间。当然-我需要的是“用户”文件夹中的所有文件夹列表,其中包含该用户的多个服务器、上次使用文件夹的时间和服务器名。基本上,我需要找到哪些配置文件文件夹已经过时了一段时间,然后将其放入excel或HTML。这个脚本完全符合我的需要,但没有格式。我将在上面展示一个我试图获取的示例。我想知道如果
    LastUsedTime
    没有值,是否会发生错误。。。如果用户从未登录过,那么它可能是空的。现在它已经组织好了,我确实看到一些空白行和带有用户但没有日期的行-所以你刚才说的很有意义-这正是我所需要的-我应该能够找出任何其他更改-我在运行它时确实注意到了,即使我得到了结果,我也得到了这个错误(这已经是一个问题-从您所做的任何操作中都没有出现)此错误是您所说的忽略某些数据的错误吗?使用“1”参数调用“ConvertToDateTime”时出现异常:如果是简单的问题,也许可以解决它。将它包括在问题中。如果是涉及的问题,最好作为另一个问题。不客气。这样你就可以通过将一个好的答案标记为已接受和/或向上投票的答案来表示你的赞赏。同样,你也可以这样做-我也在问题中添加了错误
    kanimage02
    Computer,Domain,User,LastUsed
    KANIMAGE02,NT AUTHORITY,NETWORK SERVICE,9/11/2014 10:25:19 AM
    KANIMAGE02,NT AUTHORITY,LOCAL SERVICE,9/11/2014 10:25:24 AM
    KANIMAGE02,NT AUTHORITY,SYSTEM,2/22/2011 12:07:14 PM
    
    kanantivirus01
    Computer,Domain,User,LastUsed
    KANANTIVIRUS01,NT AUTHORITY,NETWORK SERVICE,9/10/2014 3:19:03 AM
    KANANTIVIRUS01,NT AUTHORITY,LOCAL SERVICE,9/10/2014 3:19:08 AM
    KANANTIVIRUS01,NT AUTHORITY,SYSTEM,2/22/2011 12:07:14 PM