मैं एक शब्द दस्तावेज़ से नए सक्रिय निर्देशिका उपयोगकर्ता बनाने का प्रयास कर रहा हूं। हालांकि मैं उपयोगकर्ता के निर्माण के दौरान एक समस्या में भाग रहा हूं जिसमें स्क्रिप्ट कहती है "ऑब्जेक्ट नाम में खराब सिंटेक्स है" मैंने समस्या को नीचे दिए गए कोड के "नए-एडीयूसर:" हिस्से तक सीमित कर दिया है
# 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 ने मुझे भटका दिया हो।
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
$username.GetType().FullName
आउटपुट क्या करता है?