Почему не отображается правильная дата? Метка вывода в PowerShell с #
Как я могу исправить эту проблему? Я пытаюсь отобразить вывод сценария 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!";
}
1 ответ
Я бы изменил ваш сценарий passexp.ps1, чтобы он также учитывал значения атрибутов.
PasswordNeverExpires
а также
PasswordNotRequired
.
Далее удаляем строку
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")