好,所以我是Powershell的初学者。 我在工作,所以我想自动化一些东西。我使用此脚本的工作是选择那些特定的用户及其密码的到期日期,将日期设置为易于阅读的格式,然后将所有内容保存在要分析的txt文件中。
我当前的代码是这样:
$List = Get-Content D:\Users\c05896\Desktop\VIPS.txt
$Users = @()
foreach ($Item in $List){
$Users += Get-ADUser -Filter * -Properties "msDSUserPasswordExpiryTimeComputed"| where {$_.Name -like "*$Item*"}}
$Users | Sort-Object | Select-Object Name, @{Name="Password expires";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed" )}}
Out-File -filepath D:\Users\c05896\Desktop\VIPLista.txt -InputObject $Users
所以,上面的脚本就是我写的。 在Powershell ISE中的输出如下:
Name Password expires
---- ---------------
User 1 10/11/2010 01:39:53 p.m.
User 2 21/10/2018 10:21:43 a.m.
User 3 21/10/2018 08:38:23 a.m.
. .
. .
. .
这就是我想在txt文件中输出的内容,但是我却得到了这种格式:
DistinguishedName : CN=USER LASTNAME
OU=VIPs,OU=Users
Enabled : False
GivenName : USER LASTNAME
msDS-UserPasswordExpiryTimeComputed : 129192702049912335
Name : USER
ObjectClass : user
ObjectGUID : bb033273-6117-470b-9f07-aee2885a45bc
SamAccountName : B00057
SID : S-1-5-21-808411757-1154953693-317593308-27012
Surname : USER
UserPrincipalName : XXXXX
为了隐私起见,我删除了所有姓名和姓氏。
因此,问题是我该怎么做才能使出文件显示Powershell ISE上显示的信息?
非常感谢您的回答
答案 0 :(得分:3)
# --> $Users = $Users | ...
$Users = $Users | Sort-Object | Select-Object Name, @{Name="Password expires";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed" )}}
Out-File -filepath D:\Users\c05896\Desktop\VIPLista.txt -InputObject $Users
# or
# combine ISE output with file output in one command using Tee-Object
$Users | Sort-Object |
Select-Object Name, @{Name="Password expires";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed" )}} |
Tee-Object -FilePath D:\Users\c05896\Desktop\VIPLista.txt
答案 1 :(得分:1)
关于如何实现目标,Nas为您提供了一个很好的答案。我将尝试回答原因。
使用Get-ADUser检索用户对象时,默认情况下会返回许多属性。您已经意识到这一点,并使用Select-Object选择要返回的属性,甚至添加了新的自定义属性。
Select-Object输出是ISE中显示的内容(如果您还没有使用ISE,则该内容将显示在控制台中)。
您实际上没有执行的操作是修改$ Users数组中存储的对象,因此,当您将这些对象发送到Out-File时,它会接收到对象的所有属性。
Nas上面为您提供的两个选项都可以在$ Users中的对象在管道中时对其进行修改,以便在将它们发送到Out-File时,仅保留要输出到文件的属性。他的第一个示例实际上是用新的$ Users数组替换原始的$ Users数组,因此,如果您随后对其进行检查,则仅保留指定的属性。在他的第二个示例中,使用Tee-Object,$ Users仍然保持不变,并且如果您检查了这些对象,您将看到它们仍然保留DistinguishedName,Enabled,GivenName等。