我对 PowerShell 还很陌生。
我正在寻找一个脚本,该脚本将在用户的工作站上显示类似“我的信息”的内容。该脚本将查找并显示有关当前登录用户的信息。此脚本将在浏览器上显示以下内容。
在浏览器上显示此链接的原因是为了我可以添加一些文本来引导用户对目录项目进行操作,例如如何延长帐户到期日期、如何更新我的信息等。
我找到了以下脚本从这里但我无法让它为当前登录的用户运行并输出为 HTML。
[CmdletBinding()]
Param(
[Parameter(Mandatory = $True, Position = 1)]
[string]$UserName
)
#Import AD Module
Import-Module ActiveDirectory
$Employee = Get-ADuser $UserName -Properties *, 'msDS-UserPasswordExpiryTimeComputed'
$Manager = ((Get-ADUser $Employee.manager).samaccountname)
$PasswordExpiry = [datetime]::FromFileTime($Employee.'msDS-UserPasswordExpiryTimeComputed')
$AccountInfo = [PSCustomObject]@{
First_Name = $Employee.GivenName
Last_Name = $Employee.Surname
Title = $Employee.Title
Department = $Employee.department
Manager = $Manager
City = $Employee.city
Employee_Number = $Employee.employeeNumber
User_Name = $Employee.SamAccountName
Display_Name = $Employee.displayname
Email_Address = $Employee.emailaddress
Office_Phone = $Employee.officephone
Mobile_Phone = $Employee.mobilephone
}
$AccountStatus = [PSCustomObject]@{
Password_Expired = $Employee.PasswordExpired
Account_Locked_Out = $Employee.LockedOut
Lock_Out_Time = $Employee.AccountLockoutTime
Account_Enabled = $Employee.Enabled
Account_Expiration_Date = $Employee.AccountExpirationDate
Password_Last_Set = $Employee.PasswordLastSet
Password_ExpireDate = $PasswordExpiry
}
$AccountInfo
$AccountStatus
上面的脚本显示了用户名提示。我不想要那样。我希望它为当前登录的用户运行。编辑:- 正如@harrymc 指出的那样,我想我会跳过以 HTML 格式显示输出的想法。如果不太麻烦的话,有人可以告诉我如何更新上面的代码以仅显示当前用户的详细信息吗?
答案1
您可以使用以下方法自动将 powershell 对象转换为基本 HTML 页面轉換為 HTML。
$AccountInfo,$AccountStatus |
ConvertTo-Html -as List |
Out-File 'C:\folder\temp.html'
# open html file in default browser
Start-Process 'file:///C:/folder/temp.html'
如果你希望它看起来更好,有一些选项,比如格式化为表格,或者包含 css 样式表
与其他答案一样,$env:USERNAME
将返回当前用户的用户名。要使脚本停止询问用户名,请稍微更改参数,如下所示,默认值将是当前用户:
Param(
[string]$UserName = $env:USERNAME
)
如果您计划让用户自己运行该文件,他们可能没有安装 RSAT,因此Get-ADUser
需要稍微更改活动目录 cmdlet。尝试以下操作:
$searcher = [adsisearcher]"(&(objectClass=user)(SamAccountName=$($env:USERNAME)))"
$ADUser = $searcher.FindOne()
# Example: use the actual AD Attribute names like 'sn' for Surname
$AccountInfo = [PSCustomObject]@{
First_Name = $ADUser.Properties.givenname[0]
Last_Name = $ADUser.Properties.sn[0]
Title = $ADUser.properties.title[0]
Department = $ADUser.properties.department[0]
}
答案2
如果您使用当前用户名调用您找到的 PowerShell 函数,它将执行查找这些详细信息的任务。
您可以通过以下方式获取该名称和其他上下文详细信息:
$env:UserName
$env:UserDomain
$env:ComputerName
看 如何在 Windows PowerShell 中获取当前用户名?
如果您的目标是生成 HTML 文件,那么 HTML 文件只不过是一个文本文件,但您需要构建所有内容,包括标题和正文。 PowerShell 不会自动为您完成所有这些操作。