【问题标题】:Why not displaying the correct date? powershell output c# label为什么不显示正确的日期? powershell 输出 c# label
【发布时间】: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


【解决方案1】:

我会更改您的 passexp.ps1 脚本,同时考虑属性 PasswordNeverExpiresPasswordNotRequired 的值。
接下来,从 C# 代码中删除行 ps.AddCommand("Out-String");

$properties = 'PasswordNeverExpires', 'PasswordNotRequired', 'msDS-UserPasswordExpiryTimeComputed'
$user = Get-ADUser -Filter "SamAccountName -eq '$env:USERNAME'" -Properties $properties

# do not output a date, but rather a message in these cases
if ($user.PasswordNeverExpires) { return "Password for user $($env:USERNAME) never expires"}
if ($user.PasswordNotRequired)  { return "User $($env:USERNAME) doesn't need a password"}

# return the password expiry date as object (local time)
[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")

【讨论】:

    猜你喜欢
    • 2020-06-28
    • 2019-03-31
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 2020-04-02
    • 2014-03-23
    • 2013-05-15
    • 2016-04-07
    相关资源
    最近更新 更多