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