मैं एक शब्द दस्तावेज़ से नए सक्रिय निर्देशिका उपयोगकर्ता बनाने का प्रयास कर रहा हूं। हालांकि मैं उपयोगकर्ता के निर्माण के दौरान एक समस्या में भाग रहा हूं जिसमें स्क्रिप्ट कहती है "ऑब्जेक्ट नाम में खराब सिंटेक्स है" मैंने समस्या को नीचे दिए गए कोड के "नए-एडीयूसर:" हिस्से तक सीमित कर दिया है

# Import active directory module for running AD cmdlets
Import-Module activedirectory
  
#Create word application object
$word = New-Object -ComObject Word.Application

#Assign document path
$documentPath = Read-host => [Enter Template to use Ex:"C:\Users\username\Desktop\employeeform.docx"]

#open the document
$document = $word.Documents.Open($documentPath)

#list all tables in doc
$document.Tables | ft

#get info from a certain part of the table

$pager = $document.Tables[1].Cell(4,2).range.text
$fname = $document.Tables[1].Cell(6,2).range.text
$lname = $document.Tables[1].Cell(8,2).range.text
$fn1 = $fname.Substring(0,1)
$username = "$fn1$lname"
$jobtitle = $document.Tables[1].Cell(15,2).range.text
$department = $document.Tables[1].Cell(16,2).range.text
$manager = $document.Tables[1].Cell(17,2).range.text
$pagernumber = $pager.Substring(17)
$template = Read-host => [Enter Template to use Ex:MedicalAssistant]
#folder = $User.folder 

Write-Output $documentPath
Write-Output $template






   
    

#Check to see if the user already exists in AD
if (Get-ADUser -F {SamAccountName -eq $username})
{
     #If user does exist, give a warning
     Write-Warning "A user account with username $username already exist in Active Directory."
         pause
}
else
{
    #User does not exist then proceed to create the new user account 
      
    New-ADUser `
    -SamAccountName $username `
    -Name "$fname $lname" `
    -GivenName $fname `
    -Surname $lname `
    -Enabled $True `
    -DisplayName "$lname $fname" `
    -Company "Companyname" `
    -AccountPassword (convertto-securestring "Password" -AsPlainText -Force)`
    -HomeDrive "X:" `
    -ScriptPath "K32.exe" `
    -OtherAttributes @{pager=$pagernumber} `
    -Title $jobtitle `
    -Department $department `
    -Description $jobtitle `
    #-Manager $manager `  
   #-HomeDirectory $folder `

            
    }

#Close the document
$document.close()

#Close Word
$word.Quit()


pause

Google पर खोज करने के बाद ऐसा लगता है कि यह समस्या इसलिए हुई क्योंकि मैं स्क्रिप्ट में दस्तावेज़ को कैसे आयात कर रहा हूं, जो स्ट्रिंग्स के बजाय वैरिएबल ऑब्जेक्ट बनाता है, लेकिन मैं इस बारे में अनिश्चित हूं कि दस्तावेज़ को और कैसे आयात किया जाए ताकि वेरिएबल एक स्ट्रिंग के रूप में आयात हो। मैंने उपयोग करने का प्रयास किया | आउट-स्ट्रिंग और इसने मेरा त्रुटि संदेश नहीं बदला, इसलिए हो सकता है कि Google ने मुझे भटका दिया हो।

0
user16603959 12 अगस्त 2021, 01:08
क्या आप त्रुटि को सादा पाठ के रूप में पोस्ट कर सकते हैं? साथ ही, $username.GetType().FullName आउटपुट क्या करता है?
 – 
Abraham Zinala
12 अगस्त 2021, 05:06

1 उत्तर

सबसे बढ़िया उत्तर

सुनिश्चित करें कि आपके द्वारा तालिका से पढ़े जाने वाले वेरिएबल्स को ट्रिम किया गया है और खाली नहीं ($null)।

उस तालिका को एक CSV में बेहतर तरीके से फिर से बनाएँ जहाँ आपका डेटा पर अधिक नियंत्रण हो और Word.Application COM ऑब्जेक्ट के साथ खिलवाड़ न करना पड़े।

साथ ही मैं स्प्लैटिंग, ताकि आप उन सभी खराब बैकटिक्स का उपयोग करने से छुटकारा पा सकें (जो आपको त्रुटियों देगा जब इसके बाद एक नई लाइन के अलावा कुछ भी होगा ..)

$userProps = @{
    SamAccountName  = $username
    Name            = "$fname $lname"
    GivenName       = $fname
    Surname         = $lname
    Enabled         = $True
    DisplayName     = "$lname $fname"
    Company         = "Companyname"
    AccountPassword = (ConvertTo-SecureString "Password" -AsPlainText -Force)
    HomeDrive       = "X:"
    ScriptPath      = "K32.exe"
    OtherAttributes = @{pager=$pagernumber}
    Title           = $jobtitle
    Department      = $department
    Description     = $jobtitle
    # Manager       = $manager
    # HomeDirectory = $folder
}

New-ADUser @userProps
0
Theo 12 अगस्त 2021, 15:18
मैं अभी भी पावर शेल के लिए काफी नया हूं और स्प्लिटिंग अद्भुत है! मुझे इससे परिचित कराने के लिए धन्यवाद। बैकटिक्स काम करने के लिए नरक थे। इसके अलावा, मैं शब्द तालिका को एक CSV दस्तावेज़ में परिवर्तित कर रहा हूँ क्योंकि CSV के साथ काम करना आसान है। आपके सहयोग के लिए धन्यवाद!
 – 
user16603959
12 अगस्त 2021, 22:21