Function 如何使用Powershell创建函数
我需要以下代码的帮助。我希望脚本执行以下操作:提示用户输入广告组名,如果找到组名,则将组成员导出到CSV文件。其中一个要求是我必须包含一个函数语句。先谢谢你 如果我使用如下示例所示的变量:$groupsusers=Get-ADGroup-Identity$nameofgroup,而不是function语句,则代码可以工作。 但是,我不想使用变量,我想实现一个函数语句Function 如何使用Powershell创建函数,function,powershell,adgroup,Function,Powershell,Adgroup,我需要以下代码的帮助。我希望脚本执行以下操作:提示用户输入广告组名,如果找到组名,则将组成员导出到CSV文件。其中一个要求是我必须包含一个函数语句。先谢谢你 如果我使用如下示例所示的变量:$groupsusers=Get-ADGroup-Identity$nameofgroup,而不是function语句,则代码可以工作。 但是,我不想使用变量,我想实现一个函数语句 $prompt = "Enter A Group Name" do { $nameofgroup = Read-Host $pro
$prompt = "Enter A Group Name"
do
{
$nameofgroup = Read-Host $prompt
}
until(!$(dsquery Group-Object $nameofgroup; $prompt = "Group
'$nameofgroup' was not found, try again"))
$nameofgroup = Read-Host $prompt
function GetGroupInfoToCsv (#what parameters go here?){
ForEach-Object{
$settings = @{ Group = $_.DistinguishedName; Member = $null }
$_| Get-ADGroupMember |
ForEach-Object{
$settings.Member = $_.DistinguishedName
New-Object PsObject -Property $settings
}
}
}
GetGroupInfoToCsv | Export-Csv .\GroupMembers.csv -NoTypeInformation
您可以将请求用户输入和返回信息合并到同一个函数中。大概是这样的:
function Get-GroupMembers {
$prompt = "Enter A Group Name. Press Q to quit"
# create an endless loop
while ($true) {
Clear-Host
$answer = Read-Host $prompt
# if the user has had enough, exit the function
if ($answer -eq 'Q') { return }
# try and find one or more AD groups using the answer as (part of) the name
$group = Get-ADGroup -Filter "Name -like '*$answer*'"
# if we have found something, exit the while loop and start enumerating the members
if ($group) { break }
$prompt = "Group '$answer' was not found, try again. Press Q to quit"
}
# you only get here if Get-ADGroup found one or more groups
$group | ForEach-Object {
# output a PSObject with the properties you are after
$members = $_ | Get-ADGroupMember
foreach ($member in $members) {
[PsCustomObject]@{
'Group' = $_.DistinguishedName
'Member' = $member.DistinguishedName
}
}
}
}
# call the function
$groupinfo = Get-GroupMembers
# test if the function returned anything.
# the user could have cancelled of the group had no members to output
if ($groupinfo) {
Write-Host "Adding $($groupinfo.Count) items to the CSV file"
# without -Append, you would overwrite your CSV file..
$groupinfo | Export-Csv .\GroupMembers.csv -NoTypeInformation -Append
}
else {
Write-Host 'Nothing found..'
}
如您所见,我已更改了函数名,使其符合PowerShell中的约定。您的代码没有任何意义。。。至少有一部分根本不会运行。您希望函数做什么?你有没有工作代码放在函数中?Theo,谢谢你为我的初始问题提供了知识/解决方案。您的代码执行得非常完美。问题:如何实现这一行或类似的内容:在脚本要求输入组名之前获取ADgroup-filter*| sort name | select name?提前感谢。@20您可以将这一行放在函数的最顶端:
$allgroups=Get-ADGroup-Filter*
,然后在While循环中更改$group=Get-ADGroup-Filter“Name-like'*$answer*'”
到:$group=$allgroups | Where对象{$..Name-like'*$answer*$code}