学习Powershell脚本

时间:2018-10-21 20:54:16

标签: powershell

我是一个年轻的IT学徒,负责(部分)管理Active Directory任务。

我希望学习Powershell来帮助解决这个问题。

无论如何,我希望将从文件中读取数据并入我的日常任务中以简化流程,我希望提取数据并为多个AD帐户配置更改。我的想法是在单列中列出具有samaccountname的文件(无标题)。导入csv文件以获取广告用户名并禁用用户,然后在帐户说明字段中放置新的说明。

现在我有一个列出用户名的csv和一个导入csv的脚本,这就是我遇到的问题。

我可以分别执行脚本需要的disable-aduser和set-aduser -description“示例文本”功能,通过调用get-aduser并将结果通过管道传递给每个脚本,可以成功地在一种划线员情况下进行测试命令,但我希望将其放置在脚本中,并从csv中获取多个帐户的广告用户名。

我无法从csv设置对象变量(我希望这是正确的术语),由于缺少更好的用词,我无法“获得此”。我希望将其放入for循环中,以包括我描述的功能。

有人可以帮助我或描述我如何设置变量以将每个广告用户帐户封装到文件中,以帮助我继续执行脚本并配置上述更改吗?

我知道这可能是一个询问I.T专业人士的奇怪或过于简单的问题,但是我可以向您保证,我已经进行了进一步的阅读,但我无法找到解决此特定问题的方法。

我很抱歉,如果我的问题中的术语不正确。

提前谢谢您,格伦。

2 个答案:

答案 0 :(得分:0)

这是一种循环从CSV文件导入的项目的集合的方法...

# fake reading in a headerless, one-column text file as a CSV
#    in real life, use Import-CSV
$UserNameList = @'
OneTest
TwoTest
ThreeTest
FourTest
'@ | ConvertFrom-Csv -Header UserName

foreach ($UNL_Item in $UserNameList)
    {
    # do the things you need done to each user id here
    'Acting on user [ {0} ] ...' -f $UNL_Item.UserName
    }

希望有帮助,

答案 1 :(得分:0)

以下内容将加载整个CSV并将其显示在Out-GridView中。然后,您可以CTRL单击多个用户并进行处理。

我很喜欢这样做,以防其他名称误入我的CSV文件中

Import-CSV 'C:\Location\of\CSV.csv' | Out-GridView -PassThru | ForEach-Object{Disable-ADAccount $_.SamAccountName; Set-ADUser -Identity $_.SamAccountName -Description "Test Description"}

注意:感谢罗伯特(Robert)提供的建议,跳过将Import-csv放入要处理的变量,直接进入源代码。