我正在做一個作業專案,我需要一些幫助。當引數按順序排列時(CapA、CapB 等),我可以傳遞一個引數、多個引數和所有引數,但是每當我嘗試無序傳遞引數時,我的函式都是無用的。Ex.(CapB,CapA) 我知道如何在 C 中執行此操作,但我不確定如何在 PowerShell 中執行此操作。請看以下代碼:
function Get-FieldOps
{
<#
.SYNOPSIS
Generates list of technicians for each Field Service Team.
.Description
Generates list of technicians for each Field Service Team.
It is able to generate a list of technicians for one team name, multiple team names, or all team names.
.Parameter Team
Team has to be a string variable or list of string variables.
If value passed to team doesn't match a Field Service Team then it will error out.
.Example
Get-FieldOps -Team CapF
.Example
Get-FieldOps CapF
.NOTES
Created on: 12/22/2021
Created by:
FileName:
#>
[CmdletBinding()]
param
(
[Parameter(Mandatory = $true)]
[String[]]$Team
)
$OTS_EUC_Field_Ops = @('CapA','CapB', 'CapC','CapD', 'CapE', 'CapF', 'Delivery', 'Network', 'NorthA', 'NorthB', 'NorthC', 'Projects', 'SouthA', 'SouthB', 'SouthC', 'SouthD')
$OTS_Ivanti_Groups = @('_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2A','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2B','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2C','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2D','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2E', '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2F','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-Delivery','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-Network', '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-North-A','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-North-B','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-North-C','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-Projects-1361711097','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-South-A','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-South-B','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-South-C','_DOA-OTS-Ivanti-Team-OTS-EUC-Field-South-D')
for($index=0;$index -lt $OTS_EUC_Field_Ops.Length;$index )
{
if($Team[$index] -like $OTS_EUC_Field_Ops[$index])
{
Write-Host "************************************************"
$OTS_EUC_Field_Ops[$index]
Get-ADGroupMember $OTS_Ivanti_Groups[$index] |Format-Table -Property name,SamAccountName,distinguishedName -AutoSize
}
if($Team -like "ALL")
{
Write-Host "************************************************"
$OTS_EUC_Field_Ops[$index]
Get-ADGroupMember $OTS_Ivanti_Groups[$index] |Format-Table -Property name,SamAccountName,distinguishedName -AutoSize
}
}
}
uj5u.com熱心網友回復:
使用哈希表(無序關聯陣列)而不是 3 個陣列 - 這樣您就不必擔心用戶輸入與團隊名稱和組名稱之間的現有映射之間的對齊:
# Define mapping
$FieldTeamGroupMapping = @{
'CapA' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2A'
'CapB' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2B'
'CapC' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2C'
'CapD' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2D'
'CapE' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2E'
'CapF' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-2F'
'Delivery' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-Delivery'
'Network' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-Network'
'NorthA' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-North-A'
'NorthB' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-North-B'
'NorthC' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-North-C'
'Projects' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-Projects-1361711097'
'SouthA' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-South-A'
'SouthB' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-South-B'
'SouthC' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-South-C'
'SouthD' = '_DOA-OTS-Ivanti-Team-OTS-EUC-Field-South-D'
}
if($Team -contains 'ALL'){
# If the user specified `ALL`, resolve all team names
$Team = $FieldTeamGroupMapping.Keys
}
# Loop over list of team names and do operations
foreach($teamName in $Team){
if(-not $FieldTeamGroupMapping.ContainsKey($teamName)){
Write-Error "Team name '$teamName' is not recognized"
}
else {
Write-Host "************************************************"
$teamName
Get-ADGroupMember $FieldTeamGroupMapping[$teamName] |Format-Table -Property name,SamAccountName,distinguishedName -AutoSize
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/405522.html
標籤:
