您好,我正在尝试做一个PowerShell搜索,我可以输入最终用户的SAMaccountName,它可以推送出他们登录的计算机IPv4地址。
当尝试运行脚本时,它要求提供一个类:而不会给我一个用户的IPv4地址。
$selectUser = Read-Host 'What is the endusers username?'
$compname = Get-ADComputer -Filter * -Properties ipv4Address | select Name
ForEach($device in $compname) {
$usr = Get-WmiObject –ComputerName $device | Select-Object UserName
if($usr -eq $selectUser){
$compip = Get-ADComputer -Filter * -Properties ipv4Address | select ipv4Address
}
}
命令管道位置1处的cmdlet Get-WmiObject为以下参数提供值: Class: PS C:\Windows\system32>
发布于 2019-10-30 02:14:11
正如提示符所示,您需要为Get-WmiObject
的-Class
参数提供一个值;这是必需的。根据您对UserName
属性的使用,看起来您需要Win32_ComputerSystem
class...
$usr = Get-WmiObject –ComputerName $device -Class Win32_ComputerSystem | Select-Object UserName
此外,由于您使用Select-Object
的(positional) -Property
参数来检索UserName
属性,因此$usr
将不会直接包含UserName
属性,而是包含一个具有单个UserName
属性的对象。以下if
语句$usr -eq $selectUser
中的条件将不会按照您的预期运行。
要修复此问题,请改为与$usr.UserName
属性进行比较...
if($usr.UserName -eq $selectUser){
或者,要让$usr
直接存储UserName
文本,您可以使用Select-Object
的-ExpandProperty
参数...
$usr = Get-WmiObject –ComputerName $device -Class Win32_ComputerSystem | Select-Object -ExpandProperty UserName
if($usr -eq $selectUser){
...or使用成员语法检索UserName
属性...
$usr = (Get-WmiObject –ComputerName $device -Class Win32_ComputerSystem).UserName
if($usr -eq $selectUser){
https://stackoverflow.com/questions/58617766
复制