Question
logon.ps
- paul
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 5 ans 9 mois #25651
par paul
Cordialement,
Domsheldon1
Belgium
Bonjour,
Je commence à m’intéresser à PowerShell depuis 1 mois.
Le plus urgent était pour moi de mettre en place un fichier « logon » pour connecter mes dossiers partagés en lecteur réseau sur les PC avec Windows Server.
J’ai toujours utilisé par facilité les commandes Net use :
[code:1]Net use * /d /y
Net use * \"\\serveurname\sharefolder\"[/code:1]
Mais je m’efforce à le remplacer pour les commandes PowerShell.
Voici mon code fonctionnel :
[code:1]
$ndriveobj = New-Object -Com wscript.network
$ndriveobj.RemoveNetworkDrive(\"G:\", $true, $true)
$ndriveobj.MapNetworkDrive(\"G:\", \"\\TRIESTE\home\", $true)
$ndriveobj.RemoveNetworkDrive(\"H:\", $true, $true)
$ndriveobj.MapNetworkDrive(\"H:\", \"\\TRIESTE\COMPTABILITE\", $true)[/code:1]
Voici le problème que je rencontre.
Je suis arrivé à la lettre Z soit
[code:1]$ndriveobj.MapNetworkDrive(\"Z:\", \"\\TRIESTE\HORAIRE\", $true)[/code:1]
Je me suis documenté et je ne retrouve pas l’astérisque si facile dans la commande Net use * .
Pouvez-vous m’aider, je sais qu’aucun n’aura pas plus de 5 connecteurs réseaux. Mais j’ai plus de 25 dossiers à partagés.
Merci<br><br>Message édité par: Arnaud, à: 20/06/18 13:50
Je commence à m’intéresser à PowerShell depuis 1 mois.
Le plus urgent était pour moi de mettre en place un fichier « logon » pour connecter mes dossiers partagés en lecteur réseau sur les PC avec Windows Server.
J’ai toujours utilisé par facilité les commandes Net use :
[code:1]Net use * /d /y
Net use * \"\\serveurname\sharefolder\"[/code:1]
Mais je m’efforce à le remplacer pour les commandes PowerShell.
Voici mon code fonctionnel :
[code:1]
$ndriveobj = New-Object -Com wscript.network
$ndriveobj.RemoveNetworkDrive(\"G:\", $true, $true)
$ndriveobj.MapNetworkDrive(\"G:\", \"\\TRIESTE\home\", $true)
$ndriveobj.RemoveNetworkDrive(\"H:\", $true, $true)
$ndriveobj.MapNetworkDrive(\"H:\", \"\\TRIESTE\COMPTABILITE\", $true)[/code:1]
Voici le problème que je rencontre.
Je suis arrivé à la lettre Z soit
[code:1]$ndriveobj.MapNetworkDrive(\"Z:\", \"\\TRIESTE\HORAIRE\", $true)[/code:1]
Je me suis documenté et je ne retrouve pas l’astérisque si facile dans la commande Net use * .
Pouvez-vous m’aider, je sais qu’aucun n’aura pas plus de 5 connecteurs réseaux. Mais j’ai plus de 25 dossiers à partagés.
Merci<br><br>Message édité par: Arnaud, à: 20/06/18 13:50
Cordialement,
Domsheldon1
Belgium
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 5 ans 9 mois #25652
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:logon.ps
Salut,
voici un extrait d'un logonscript, le niveau est un peu plus avancé que le tiens, mais peut être y trouveras-tu réponse à ta question:
[code:1]
New-Variable -Name CurrentDate -Value ([Datetime]::Now) -Option ReadOnly -Scope script
New-Variable -Name DatasPath -Value '.\' -Option ReadOnly -Scope script
New-Variable -Name LogsPath -Value 'C:\Temp\Log' -Option ReadOnly -Scope script
New-Variable -Name PatternLogDirectoryName -Value '{0:MMyyyy}' -Option ReadOnly -Scope script
New-Variable -Name PatternLogFileName -Value '{0:ddMMyyy-HHmm}.Log' -Option ReadOnly -Scope script
New-Variable -Name LogFileName -value (\"$LogsPath\$PatternLogDirectoryName\$PatternLogFileName\" -F $CurrentDate) -Option ReadOnly -Scope script
function ValideDrivename{
#S'assure de la syntaxe d'un nom de drive
param([string]$Drive)
$Drive=$Drive.Trim().ToUpper()
if (-not $Drive.Contains(':') )
{ $Drive+=':'}
return $Drive
}
function New-NetworkDrive {
<#
.synopsis
A function to create Networkdrives
.Example
New-NetworkDrive 'x' '\\localhost\C$'
.Example
New-NetworkDrive 'Y:' '\\localhost\C$\Windows'
#>
Param(
[string]$Drive,
[string]$Unc
)
$Drive = ValideDrivename $Drive
try {
\"Create network drive : $Drive on $Unc\" >> $LogFileName
$global:WSNetWork.MapNetworkDrive($Drive, $Unc)
}
catch{
Write-Error $_.Exception.Message
@\"
Un problème est survenu lors de la création lecteur réseau $Drive.
L'erreur était :
$_
\"@ >> $LogFileName
}
}#New-NetworkDrive
function Get-NetworkDrives{
<#
.synopsis
A function to list the currently mapped Networkdrives
.Example
Get-NetworkDrives
#>
# try {
$mappedDrives = @{}
#l'appelant gére les possibles erreurs
$a = $global:WSNetWork.EnumNetworkDrives()
$anz = $a.count()
for ($i = 0; $i -lt $anz; $i = $i + 2)
{
$drive = $a.item($i)
$path = $a.item($i+1)
$mappedDrives[$drive] = $path
}
$mappedDrives
}#Get-NetworkDrives
function Remove-NetworkDrive{
param($Drive)
<#
.synopsis
A function to remove Networkdrives
.Example
Remove-NetworkDrive X
.Example
Remove-NetworkDrive Y:
#>
$Drive = ValideDrivename $Drive
try {
$global:WSNetWork.RemoveNetworkDrive($Drive)
}
catch{
Write-Error $_.Exception.Message
@\"
Un problème est survenu lors de la suppression du lecteur réseau $Drive.
L'erreur était :
$_
\"@ >> $LogFileName
}
}#Remove-NetworkDrive
function Remove-AllNetworkDrive
{
try {
$AllDrives=Get-NetworkDrives
$AllDrives.GetEnumerator()|
Foreach {
\"Remove network drive : $($_.key)=$($_.value)\" >> $LogFileName
Remove-NetworkDrive $_.Key
}
}
catch{
Write-Error $_.Exception.Message
@\"
Un problème est survenu lors de la suppression des lecteurs réseau.
L'erreur était :
$_
\"@ >> $LogFileName
}
}#Remove-AllNetworkDrive
#Objet de création de drive réseau
$global:WSNetWork = New-Object -ComObject WScript.Network
Remove-AllNetworkDrive
#pour $logname tu peux mettre 'c:\temp\test.log'
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 19/06/18 18:42
voici un extrait d'un logonscript, le niveau est un peu plus avancé que le tiens, mais peut être y trouveras-tu réponse à ta question:
[code:1]
New-Variable -Name CurrentDate -Value ([Datetime]::Now) -Option ReadOnly -Scope script
New-Variable -Name DatasPath -Value '.\' -Option ReadOnly -Scope script
New-Variable -Name LogsPath -Value 'C:\Temp\Log' -Option ReadOnly -Scope script
New-Variable -Name PatternLogDirectoryName -Value '{0:MMyyyy}' -Option ReadOnly -Scope script
New-Variable -Name PatternLogFileName -Value '{0:ddMMyyy-HHmm}.Log' -Option ReadOnly -Scope script
New-Variable -Name LogFileName -value (\"$LogsPath\$PatternLogDirectoryName\$PatternLogFileName\" -F $CurrentDate) -Option ReadOnly -Scope script
function ValideDrivename{
#S'assure de la syntaxe d'un nom de drive
param([string]$Drive)
$Drive=$Drive.Trim().ToUpper()
if (-not $Drive.Contains(':') )
{ $Drive+=':'}
return $Drive
}
function New-NetworkDrive {
<#
.synopsis
A function to create Networkdrives
.Example
New-NetworkDrive 'x' '\\localhost\C$'
.Example
New-NetworkDrive 'Y:' '\\localhost\C$\Windows'
#>
Param(
[string]$Drive,
[string]$Unc
)
$Drive = ValideDrivename $Drive
try {
\"Create network drive : $Drive on $Unc\" >> $LogFileName
$global:WSNetWork.MapNetworkDrive($Drive, $Unc)
}
catch{
Write-Error $_.Exception.Message
@\"
Un problème est survenu lors de la création lecteur réseau $Drive.
L'erreur était :
$_
\"@ >> $LogFileName
}
}#New-NetworkDrive
function Get-NetworkDrives{
<#
.synopsis
A function to list the currently mapped Networkdrives
.Example
Get-NetworkDrives
#>
# try {
$mappedDrives = @{}
#l'appelant gére les possibles erreurs
$a = $global:WSNetWork.EnumNetworkDrives()
$anz = $a.count()
for ($i = 0; $i -lt $anz; $i = $i + 2)
{
$drive = $a.item($i)
$path = $a.item($i+1)
$mappedDrives[$drive] = $path
}
$mappedDrives
}#Get-NetworkDrives
function Remove-NetworkDrive{
param($Drive)
<#
.synopsis
A function to remove Networkdrives
.Example
Remove-NetworkDrive X
.Example
Remove-NetworkDrive Y:
#>
$Drive = ValideDrivename $Drive
try {
$global:WSNetWork.RemoveNetworkDrive($Drive)
}
catch{
Write-Error $_.Exception.Message
@\"
Un problème est survenu lors de la suppression du lecteur réseau $Drive.
L'erreur était :
$_
\"@ >> $LogFileName
}
}#Remove-NetworkDrive
function Remove-AllNetworkDrive
{
try {
$AllDrives=Get-NetworkDrives
$AllDrives.GetEnumerator()|
Foreach {
\"Remove network drive : $($_.key)=$($_.value)\" >> $LogFileName
Remove-NetworkDrive $_.Key
}
}
catch{
Write-Error $_.Exception.Message
@\"
Un problème est survenu lors de la suppression des lecteurs réseau.
L'erreur était :
$_
\"@ >> $LogFileName
}
}#Remove-AllNetworkDrive
#Objet de création de drive réseau
$global:WSNetWork = New-Object -ComObject WScript.Network
Remove-AllNetworkDrive
#pour $logname tu peux mettre 'c:\temp\test.log'
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 19/06/18 18:42
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- paul
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 5 ans 9 mois #25654
par paul
Cordialement,
Domsheldon1
Belgium
Réponse de paul sur le sujet Re:logon.ps
Merci Laurent.
Je vais y passer ma soirée à comprendre ton code
Je vais y passer ma soirée à comprendre ton code
Cordialement,
Domsheldon1
Belgium
Connexion ou Créer un compte pour participer à la conversation.
- paul
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 5 ans 9 mois #25655
par paul
Cordialement,
Domsheldon1
Belgium
Réponse de paul sur le sujet Re:logon.ps
J'avoue que c'est plus compliqué que je ne le croyais!
A-t-il une autre façon plus simple ? Ou m'expliquer les étapes du code?
Merci
A-t-il une autre façon plus simple ? Ou m'expliquer les étapes du code?
Merci
Cordialement,
Domsheldon1
Belgium
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 5 ans 9 mois #25658
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:logon.ps
Bonjour ami Belge !
Soit le bienvenu dans le forum !
Pourrais-tu être un peu plus clair car je ne suis pas sûr de bien comprendre tes questions ?
Que cherches tu à faire ? A déconnecter tous les lecteurs en une seule commande ?
Sache toutefois que PowerShell te permet l'exécution de n'importe quelle commande CMD (dont la commande NET). Donc si tu le souhaites tu peux continuer à utiliser Net Use ...
Après si tu préfères une solution 100% PowerShell, en effet ce sera un peu plus verbeux (d'où le script de Laurent).
Arnaud
Soit le bienvenu dans le forum !
Pourrais-tu être un peu plus clair car je ne suis pas sûr de bien comprendre tes questions ?
Je me suis documenté et je ne retrouve pas l’astérisque si facile dans la commande Net use * .
Que cherches tu à faire ? A déconnecter tous les lecteurs en une seule commande ?
Sache toutefois que PowerShell te permet l'exécution de n'importe quelle commande CMD (dont la commande NET). Donc si tu le souhaites tu peux continuer à utiliser Net Use ...
Après si tu préfères une solution 100% PowerShell, en effet ce sera un peu plus verbeux (d'où le script de Laurent).
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 5 ans 9 mois #25663
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:logon.ps
domsheldon1 écrit:
domsheldon1 écrit:
domsheldon1 écrit:
Et précise ce que tu ne comprends pas dans ce code. Il n'y a rien de sorcier ici, c'est juste que cela fait bcp d'un coup pour qui débute.
Le code reprend ton approche mais celui proposé est basé sur des fonctions avec une gestion d'erreur basique et un mini fichier de log en cas d'erreur.
Tu peux supprimer les lignes du type
New-Variable -Name CurrentDate et les remplacer par $LogFileName=TonPath
C'est de débuter qui l'est.J'avoue que c'est plus compliqué que je ne le croyais!
domsheldon1 écrit:
Peut être, mais je ne fais pas de loginscript tous les jours, voir rarement.A-t-il une autre façon plus simple ?
domsheldon1 écrit:
Oui, mais écrit moi déjà en pseudo code ce que tu veux réaliser. Des minis specs en qq sorte.Ou m'expliquer les étapes du code?
Et précise ce que tu ne comprends pas dans ce code. Il n'y a rien de sorcier ici, c'est juste que cela fait bcp d'un coup pour qui débute.
Le code reprend ton approche mais celui proposé est basé sur des fonctions avec une gestion d'erreur basique et un mini fichier de log en cas d'erreur.
Tu peux supprimer les lignes du type
New-Variable -Name CurrentDate et les remplacer par $LogFileName=TonPath
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.081 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- logon.ps