【发布时间】:2021-12-27 17:02:14
【问题描述】:
我该如何解决这个问题? 我正在尝试在标签上显示 powershell 脚本输出。 PowerShell代码在我运行时工作正常,但是如果我必须让输出不显示任何内容,则只显示我写的错误消息,如果我更改脚本并放置Write-Output(在get-aduser之前)并运行它1601/01/01 00:00:00 这个日期出现了 4 次(c# 可以显示这个版本)
Powershell代码(显示当前登录用户的密码过期日期):
Get-ADUser -Filter "SamAccountName -eq '$env:username'" -Properties "msDS-UserPasswordExpiryTimeComputed" |
Select-Object -Property @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} | ft ExpiryDate -HideTableHeaders
C#
PowerShell ps = PowerShell.Create();
ps.AddScript(File.ReadAllText(@"C:\temp\passexp.ps1"));
ps.AddCommand("Out-String");
var result = ps.Invoke();
foreach (var item in result)
{
label5.Text = item.ToString();
}
if (ps.HadErrors==true)
{
label5.Text = "Error!";
}
【问题讨论】:
-
这意味着
$_."msDS-UserPasswordExpiryTimeComputed"的计算结果为$null或空字符串。原则上,您可以将管道简化为Get-ADUser -Filter "SamAccountName -eq '$env:username'" -Properties "msDS-UserPasswordExpiryTimeComputed" | ForEach-Object { [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") }- 然后您就不需要Out-String。
标签: c# powershell get-aduser