像许多其他人一样,我的背景是 Linux,没有 powershell 经验。所以这个面向对象的编程把我搞砸了。
我需要在 VMware Horizon 中搜索分配有用户的 VM,然后检查它们是否在 AD 中被禁用。如果它们在 AD 中被禁用,我想回收 VM。
目前我正在从 VMware Horizon 中为用户提取 SID,但是当我尝试在针对 AD 的调用命令中使用这些 SID 时,我收到以下错误
“你调用的对象是空的”
到目前为止的脚本
function getlist() {
$temp=Invoke-Command -ComputerName $vdiserver -ScriptBlock { add-pssnapin vmware.view.broker; get-desktopvm | select user_sid }
$list=$temp | Select-Object user_sid
#$list
}
$vdi1="server1"
$vdi2="server2"
$test=Test-Connection -ComputerName $vdi1 -Quiet
$test2=Test-Connection -ComputerName $vdi2 -Quiet
if ($test -eq "True"){
$vdiserver=$vdi1
getlist
}
elseif ($test2 -eq "True"){
$vdiserver=$vdi2
getlist
}
else {echo "No servers to connect to"}
ForEach ($user in $list) #{
#echo $user
#sleep 1
#}
{Invoke-Command -ComputerName domaincontroller -ScriptBlock {param($p1) get-aduser -identity $p1 } -argumentlist $user}