Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
powershell_newsymlink [2019/11/29 11:54] – [New-SymbolicLink - Création d'un lien symbolique] nekanpowershell_newsymlink [2021/03/05 16:10] (Version actuelle) nekan
Ligne 1: Ligne 1:
-~~CLOSETOC~~ 
 ====== New-SymbolicLink - Création d'un lien symbolique ====== ====== New-SymbolicLink - Création d'un lien symbolique ======
 +<label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/11/29 11:19//
  
 Créer un lien symbolique peut avoir plusieurs utilités. On peut par exemple réduire une arborescence ou regrouper dans un dossier des fichiers situés dans différents dossier. Créer un lien symbolique peut avoir plusieurs utilités. On peut par exemple réduire une arborescence ou regrouper dans un dossier des fichiers situés dans différents dossier.
Ligne 12: Ligne 12:
 ===== Script ===== ===== Script =====
  
-<code:ps1># Création de lien symbolique+<sxh powershell># Création de lien symbolique
 function New-SymbolicLink() function New-SymbolicLink()
 { {
Ligne 51: Ligne 51:
  .NOTES  .NOTES
  Crée par Nicolas THOREZ, Shyrka System  Crée par Nicolas THOREZ, Shyrka System
-                        Basée sur les travaux de J. F. Larvoire 
   
-  .LINK+ .LINK
  https://www.shyrkasystem.com  https://www.shyrkasystem.com
-                        https://github.com/JFLarvoire/SysToolsLib/blob/master/PowerShell/ShadowCopy.ps1 
   
  #>  #>
Ligne 81: Ligne 79:
  {  {
  Add-Type @"  Add-Type @"
-        using System; +            using System; 
-       using System.Runtime.InteropServices; +            using System.Runtime.InteropServices; 
-       namespace Win32 { +  
-  public class SymLink { +            namespace Win32 
-   [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] +            
-   public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags); +                public class SymLink 
-   [DllImport("kernel32.dll")] +                
-    public static extern uint GetLastError(); +                    [DllImport("kernel32.dll")] 
- +                    public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags); 
-    public static uint Create(string lpSymlinkFileName, string lpTargetFileName, int dwFlags) { +                
-      bool done = CreateSymbolicLink(lpSymlinkFileName, lpTargetFileName, dwFlags); +            }
-      if (done) { +
-        return 0; +
-      } else { +
-        return GetLastError(); +
-     +
-   +
-  +
-       }+
 "@ "@
  }  }
Ligne 114: Ligne 104:
   
  # Création du lien  # Création du lien
- $error = [Win32.SymLink]::Create($Path, $Target, $Flag)+ [Win32.SymLink]::CreateSymbolicLink($Path, $Target, $Flag)
   
  # Traitement des éventuelles erreurs  # Traitement des éventuelles erreurs
- If ($error+ If ($?
-+    
- throw [ComponentModel.Win32Exception][int]$error +        # Affichage du résultat 
-+     New-Object PSObject -Property @{ 
-  +     SymLink  = $Path 
- # Affichage du résultat +     Target   = $Target 
- New-Object PSObject -Property @{ +     Type = $Type 
- SymLink  = $Path +        } 
- Target   = $Target +    } 
- Type = $Type +    Else 
-+    { 
-}</code>+        Write-Error "Erreur lors de la création du lien" 
 +    
 +}</sxh>
  
- --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/11/29 11:19// 
 ~~DISCUSSION~~ ~~DISCUSSION~~
  • powershell_newsymlink.1575024846.txt.gz
  • Dernière modification : 2019/11/29 09:54
  • (modification externe)