Question [] - import-module ds une fonction

Plus d'informations
il y a 5 ans 5 mois #28717 par Ludovic B
Bonjour à tous ,
je voudrais importer le module ActiveDirectory ds une fonction mais helas j'ai un message d'erreur : n'a pas pu etre chargé

voici le script
[code:1]
#region credential
$adminuser = \"xx\xx\"
$mdp = ConvertTo-SecureString -String \"xx\" -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $adminuser, $mdp
#endregion credential

Import-Module ActiveDirectory -Global
#region fonction adduserAd


function adduserAD
{
[CmdletBinding()]
PARAM
(
$nomF,
$prenomF,
$NomcompletF,
$SamAccountNameF,
$UPNF,
$ComputerNameF,
[Parameter(Mandatory = $true, ValueFromPipeline = $true)]
[ValidateNotNull()]
[System.Management.Automation.PSCredential]
[System.Management.Automation.Credential()]
$Credential = [System.Management.Automation.PSCredential]::Empty
)

$command = Invoke-Command -ComputerName $ComputerNameF -ScriptBlock {
# Import-Module ActiveDirectory
$password = \"Password26\" | ConvertTo-SecureString -AsPlainText -Force
$PathOU = \"xx\"
$ScriptPath = \"xx\"
$suffixemail = \"xx\"
$suffixeUPN = \"xx\"
#$initdateexpirationcomptead = [System.DateTime] \"16/11/2016 23:59:59\"
$initdateexpirationcomptead = [System.DateTime] \"2020/11/16 23:59:59\" # date format US
$dateexpirationcomptead = $initdateexpirationcomptead.AddDays(2) # pour ajouter 1 jour

Write-Host $SamAccountNameF -ForegroundColor Yellow
Write-Host $NomcompletF -ForegroundColor Yellow

New-ADUser -Name $using:NomcompletF -GivenName $using:«»prenomF -Surname $using:nomF -SamAccountName $using:«»SamAccountNameF -UserPrincipalName $using:UPNF$suffixeUPN -DisplayName $using:NomcompletF -Path $PathOU -ScriptPath $ScriptPath -AccountExpirationDate $dateexpirationcomptead -AccountPassword $password -Enabled $true

} -Credential $Credential
}
#endregion fonction adduserAd

#region remove-string


function Remove-StringDiacritic
{
<#
.SYNOPSIS
This function will remove the diacritics (accents) characters from a string.

.DESCRIPTION
This function will remove the diacritics (accents) characters from a string.
.PARAMETER String
Specifies the String(s) on which the diacritics need to be removed
.PARAMETER NormalizationForm
Specifies the normalization form to use
msdn.microsoft.com/en-us/library/system....nform(v=vs.110).aspx
.EXAMPLE
PS C:\> Remove-StringDiacritic \"L'été de Raphaël\"

L'ete de Raphael
.NOTES
Francois-Xavier Cat
@lazywinadm
www.lazywinadmin.com
github.com/lazywinadmin
#>
[CMdletBinding()]
PARAM
(
[ValidateNotNullOrEmpty()]
[Alias('Text')]
[System.String[]]$String,
[System.Text.NormalizationForm]$NormalizationForm = \"FormD\"
)

FOREACH ($StringValue in $String)
{
Write-Verbose -Message \"$StringValue\"
try
{
# Normalize the String
$Normalized = $StringValue.Normalize($NormalizationForm)
$NewString = New-Object -TypeName System.Text.StringBuilder

# Convert the String to CharArray
$normalized.ToCharArray() |
ForEach-Object -Process {
if ([Globalization.CharUnicodeInfo]::GetUnicodeCategory($psitem) -ne [Globalization.UnicodeCategory]::NonSpacingMark)
{
[void]$NewString.Append($psitem)
}
}

#Combine the new string chars
Write-Output $($NewString -as [string])
}
Catch
{
Write-Error -Message $Error[0].Exception.Message
}
}
}
#endregion remove-string

$prenomUser = \"laurence\"
$nomUser = \"carronne\"



$prenomUser = Remove-StringDiacritic -String $prenomUser
#$prenomUser | get-member

$nomUserUP = $nomUser.ToUpper()
#$nomUserUP

$nomUserL = $nomUser.ToLower()
#$nomUserL

$prenomUserUP = $prenomUser.ToUpper()
#$prenomUserUP

$prenomUserL = $prenomUser.ToLower()
#$prenomUserL

$Name = $prenomUser + \" \" + $nomUserUP

$SamAccountName = $nomUserUP + \"\" + $prenomUserUP.substring(0, 2)


$Nomcomplet = $nomUserUP + \" \" + $prenomUser

$UPN = $prenomUserL + \".\" + $nomUserL

Write-Host $Name -ForegroundColor Green
Write-Host $SamAccountName -ForegroundColor Green
Write-Host $Nomcomplet -ForegroundColor Green
Write-Host $UPN -ForegroundColor Green



$remoteAction = @{
ComputerNameF = $env:COMPUTERNAME
nomF = $nomUserUP
prenom = $prenomUserL
NomcompletF = $Nomcomplet
SamAccountNameF = $SamAccountName
UPNF = $UPN
}


adduserAD @remoteAction -Credential $cred # ou adduserAD $nomUser $prenomUser


[/code:1]

je ne sais pas ou placer import-module ActiveDirectory

merci de votre aide.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 5 mois #28718 par Arnaud Petitjean
Bonjour Ludoob,

Depuis PowerShell version 3 il n'y a plus besoin d'importer explicitement les modules. Ces derniers, s'ils sont présents dans le path ([code:1]variable $env:«»PSModulePath[/code:1]), se chargent dès lors que l'on fait appel à l'une des commandes du module.

Donc, j'aurai tendance à penser que ton module Active Directory, n'est soit pas installé, soit pas dans le Path... ;)

Arnaud<br><br>Message édité par: Arnaud, à: 11/04/19 14:38

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 5 mois #28719 par Ludovic B
le module est bien présent ds le path ,
si je fais un get-command -module ActiveDirectory
ça fonctionne bien

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 5 mois #28724 par Philippe
salut ludoob

je vois que tu fais du remote, il est possible que le module ne soit pas sur la machine distante

d'ailleur sur le sujet du remote tu peut l'evité
il existe l'option credential sur New-AdUser
.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 5 mois #28739 par Arnaud Petitjean
Ah oui, bien vu Philippe !

Je n'avais pas prêté attention au fait qu'il faisait une exécution distante.

Effectivement, ton module AD n'est pas présent sur ta machine distante.

Le mieux est de ne pas faire de remoting lorsque tu fais des choses dans l'AD car tu vas vite te casser les dents sur la problématique du double saut.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 5 mois #28742 par Laurent Dardenne
Salut,
Arnaud écrit:

Depuis PowerShell version 3 il n'y a plus besoin d'importer explicitement les modules.

Je pense qu'il est préférable d'expliciter le chargement, d'une part pour la relecture et d'autre part si on souhaite retrouver les dépendances aisément.

Reste le cas où le 'service infra' d'une société peut désactiver ce comportement par défaut.

Ceci dit, cela reste très utile en ligne de commande.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.128 secondes
Propulsé par Kunena