我正在开发一个脚本,该脚本将在没有安装任何RSAT工具的客户端(桌面)Windows机器上运行。该脚本将轮询有关该机器的各种内容,其中一个我想要包括的是Active Directory中的机器描述。最终目标是将这些保存到SQL中以获得漂亮的表。
我能够获得除AD描述之外的所有内容。这就是我现在正在尝试的事情:
CREATE TABLE sd_user_feed_notification
( user_id INT NOT NULL COMMENT 'PK, FK ref user.id'
, feed_notification_id INT NOT NULL COMMENT 'PK, FK ref feed_notification.id'
, PRIMARY KEY (user_id, feed_notification_id)
, KEY sd_user_feed_notification_IX (feed_notification_id, user_id)
, CONSTRAINT FK_sd_user_feed_notification_user
FOREIGN KEY (user_id) REFERENCES sd_user (id)
ON UPDATE CASCADE ON DELETE CASCADE
, CONSTRAINT FK_sd_user_feed_notification_feed
FOREIGN KEY (feed_notification_id) REFERENCES sd_feed_notification (id)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB
;
我知道正在传递计算机名称,因为
的结果$Computer = (Get-WmiObject Win32_ComputerSystem | Select -Expand Name) | Out-String
$session = New-PSSession -ComputerName domainController
Invoke-Command -Session $session -ScriptBlock {
param(
[Parameter(Position=0)]
$computer
)
Import-Module ActiveDirectory
write-host "the value of the passed parameter is $computer"
Get-ADComputer -SearchBase 'DC=CONTOSO,DC=LOCAL' -Filter {Name -Like $computer} -Properties Description | Select -Expand Description
write-host "the name of this computer is $(Get-WmiObject Win32_ComputerSystem | Select -Expand Name)"
write-host $description
} -ArgumentList $Computer
确实显示了我传递的计算机的名称。我知道该命令确实在服务器上运行,因为
的结果write-host "the value of the passed parameter is $computer"
确实显示安装了ADUC的服务器的名称。我知道拉取描述的命令在该服务器上工作,因为如果我使用RDP连接到所述服务器,我可以毫无问题地运行该命令。
我没有得到任何错误(我的$ ErrorActionPreference是“停止”),它只是简单地跳过代码行,就像它是一个注释。
我有什么遗漏,或者更好的方式让我拉出所说的电脑的描述?
答案 0 :(得分:2)
您无需远程从Active Directory请求信息。这是一个甚至不使用AD cmdlet的简短示例:
$computerName = [Net.Dns]::GetHostName()
$searcher = [ADSISearcher] "(sAMAccountName=$computerName$)"
$searcher.PropertiesToLoad.AddRange(@("description"))
$searchResult = $searcher.FindOne()
"Computer description: {0}" -f $searchResult.Properties["description"][0]