Flash info

"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information. "

Albert Einstein (1879-1955)

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
ludoob
Utilisateur

PowerShelleur Débutant
Messages: 31
graphgraph
Karma: 0  
[] - import-module ds une fonction - 11/04/19 13:52 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:

  #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 $trueValueFromPipeline $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 (accentscharacters from a string.      .DESCRIPTION     This function will remove the diacritics (accentscharacters from a string. .PARAMETER String     Specifies the String(son which the diacritics need to be removed .PARAMETER NormalizationForm     Specifies the normalization form to use     https://msdn.microsoft.com/en-us/library/system.text.normalizationform(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



je ne sais pas ou placer import-module ActiveDirectory

merci de votre aide.
  | | L'administrateur a désactivé l'accés public en écriture.
Arnaud
Admin

Administrateur
Messages: 1317
graphgraph
Karma: 45  
Re:[] - import-module ds une fonction - 11/04/19 14:38 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:

 variable $env:PSModulePath

), 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

Message édité par: Arnaud, à: 11/04/19 14:38
MVP PowerShell (depuis 2007)
Suivez moi sur Twitter !
  | | L'administrateur a désactivé l'accés public en écriture.
ludoob
Utilisateur

PowerShelleur Débutant
Messages: 31
graphgraph
Karma: 0  
Re:[] - import-module ds une fonction - 11/04/19 14:48 le module est bien présent ds le path ,
si je fais un get-command -module ActiveDirectory
ça fonctionne bien
  | | L'administrateur a désactivé l'accés public en écriture.
6ratgus
Utilisateur

PowerShelleur Platinum
Messages: 1658
graphgraph
Karma: 121  
Re:[] - import-module ds une fonction - 12/04/19 13:30 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
.
  | | L'administrateur a désactivé l'accés public en écriture.
Arnaud
Admin

Administrateur
Messages: 1317
graphgraph
Karma: 45  
Re:[] - import-module ds une fonction - 12/04/19 15:54 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 (depuis 2007)
Suivez moi sur Twitter !
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5655
graph
Karma: 206  
Re:[] - import-module ds une fonction - 13/04/19 17:16 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
  | | L'administrateur a désactivé l'accés public en écriture.
ludoob
Utilisateur

PowerShelleur Débutant
Messages: 31
graphgraph
Karma: 0  
Re:[] - import-module ds une fonction - 16/04/19 08:41 je fais un remote sur ma machine , je sais c bizarre , mais c pour tester une fonction avec credential
  | | L'administrateur a désactivé l'accés public en écriture.
6ratgus
Utilisateur

PowerShelleur Platinum
Messages: 1658
graphgraph
Karma: 121  
Re:[] - import-module ds une fonction - 16/04/19 09:29 ok j'avais pas vu a mon tour
donc ta un probleme !!! et je vois pas le quel

il est possible que ce soit le double hop comme la fait remarquer Arnaud

il faut que fasse des tests !
  | | L'administrateur a désactivé l'accés public en écriture.
6ratgus
Utilisateur

PowerShelleur Platinum
Messages: 1658
graphgraph
Karma: 121  
Re:[] - import-module ds une fonction - 16/04/19 15:28 bon, y a pas de probleme de double saut

j'ai testé ton script :

test sans le rsat (module AD) j'ai erreur "pas de module ActiveDirectory", ce qui est normal !

test avec le rsat d'installer, pas pu testé en local mais a distance ça fonctionne normalement

donc pour ton probleme je vois pas, sauf que le module n'est pas present mais tu nous a confirmé qu'il bien installer !
comment la tu installer ?
.
  | | L'administrateur a désactivé l'accés public en écriture.
ludoob
Utilisateur

PowerShelleur Débutant
Messages: 31
graphgraph
Karma: 0  
Re:[] - import-module ds une fonction - 17/04/19 10:30 merci d'avoir pris le temps pour analyser le script et de la tester.

si je fais un get-command -module ActiveDirectory sur ma machine.
j'ai bien toutes les commandes de l'AD.

peut etre un bug si on utilise en local , je vais faire plutôt un scriptblock , je ferai un retour si ok ou nok.
  | | L'administrateur a désactivé l'accés public en écriture.
© 2019 PowerShell-Scripting.com