Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
powershell_newsymlink [2019/11/29 11:19] – créée 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 6: Ligne 6:
 Pour cela, il existe la commande ''New-Item'' qui avec son parametre ''-ItemType SymbolicLink'' crée des lien symbolique. Cependant, cette commande à une limite. Elle ne peut pas créer des liens avec des éléments non accessibles naturellement par le système comme par exemple les ShadowCopy. Pour cela, il existe la commande ''New-Item'' qui avec son parametre ''-ItemType SymbolicLink'' crée des lien symbolique. Cependant, cette commande à une limite. Elle ne peut pas créer des liens avec des éléments non accessibles naturellement par le système comme par exemple les ShadowCopy.
  
-La fonction suivante résout ce problème. Elle est basée sur les travaux de +La fonction suivante résout ce problème.
  
-  * Référence : [[https://github.com/JFLarvoire/SysToolsLib/blob/master/PowerShell/ShadowCopy.ps1|J. F. Larvoire]] 
   * Référence : [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-item?view=powershell-6|Microsoft]]   * Référence : [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-item?view=powershell-6|Microsoft]]
  
 ===== Script ===== ===== Script =====
  
-<code:ps1># Création de lien symbolique+<sxh powershell># Création de lien symbolique
 function New-SymbolicLink() function New-SymbolicLink()
 { {
Ligne 52: 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 82: 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 115: 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 
-+    { 
-}+        Write-Error "Erreur lors de la création du lien" 
 +    } 
 +}</sxh> 
 + 
 +~~DISCUSSION~~
  • powershell_newsymlink.1575022769.txt.gz
  • Dernière modification : 2019/11/29 09:19
  • (modification externe)