我的目标是运行一个powershell脚本,该脚本将查看当前用户是否是组的成员。如果用户是成员,则它将更改文件的内容。如果没有,它就会退出。我刚刚运行它并且没有对我的文件进行更改。
我知道这两个单独的脚本分别按照宣传的方式工作。我需要帮助确定为什么当我将它们组合起来时它没有给出我想要的结果,因为没有错误消息:
Import-Module ActiveDirectory
$group = "The Beatles"
$members = Get-ADGroupMember -Identity $group -Recursive | Select -ExpandProperty Name
if($members -contains $ENV:USERNAME)
{
$File = "\\server\folder\$($Env:USERNAME)\File.reg"
$Content = Get-Content -Path $File |
ForEach-Object {
$_ -replace 'peter best',$ENV:USERNAME
}
Set-Content -Path $File -Value $Content
}
else
{
Exit
}
我将if括号的内容替换为:Write-Host“WINNER WINNER!”它仍然没有做任何事情。但是,如果我用for替换if并消除else部分,它就会吐出“WINNER WINNER!”。我的猜测是我的语法或理解如何在If大括号内执行代码是罪魁祸首。
如何获得所需的结果?
我很感激输入。
谢谢,
维克多
答案 0 :(得分:2)
Active Directory Name
属性值不太可能与用户名相同(即您可能是" Victor Antifries"但您的用户名可能是" v.antifries&# 34;或" victor01")。
您想要抓住SAMAccountName
财产:
$members = Get-ADGroupMember -Identity $group -Recursive | Select -ExpandProperty SAMAccountName