Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

315
Visualizações
¿Cómo puedo replicar New-SmbGlobalMapping en código C#?

Estoy escribiendo un servicio que controla los contenedores acoplables. Quiero tener el volumen montado como un recurso compartido de Azure y, por lo tanto, necesito usar la asignación global de SMB. Si uso el WNetAddConnection2A habitual, puedo montar el recurso compartido sin problemas en mi código, pero los contenedores no pueden verlo porque no es "global". No puedo encontrar la fuente para el comando PowerShell New-SmbGlobalMapping (¿hay alguna forma de verlo?) y no puedo encontrar una API adecuada para llamar. Espero que alguien sepa el conjuro mágico que puedo poner en mi código .NET.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

No puedo encontrar la fuente para el comando PowerShell New-SmbGlobalMapping (¿hay alguna forma de verlo?) y no puedo encontrar una API adecuada para llamar. Espero que alguien sepa el conjuro mágico que puedo poner en mi código .NET.

PowerShell usa WMI

En su caso, llama al método Create de la clase MSFT_SmbMapping (exactamente MSFT_SmbGlobalMapping )

Puede usar WMI Code Creator para generar/probar código C#


EDITAR : prueba con PowerShell.Create

  • Prueba como administrador (" requireAdministrator " en el manifiesto) en Windows 10
  • Código de prueba (C#, VS 2015) =>
 // PowerShell calls CredUIPromptForCredentialsW to display the User/Password dialog (you can call it with P/Invoke if needed) string sUser = "user@provider.com"; string sPassword = "myPassword"; System.Net.NetworkCredential networkCredential = new System.Net.NetworkCredential(sUser, sPassword, null); System.Security.SecureString securePassword = new System.Security.SecureString(); foreach (var c in networkCredential.Password) securePassword.AppendChar(c); // Add reference to : // C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0\System.Management.Automation.dll // Add : // using System.Management.Automation; PSCredential psCredential = new PSCredential(networkCredential.UserName, securePassword); // Error handling must be improved : if I pass an invalid syntax for "RemotePath" or not launched as Admin, // nothing happens (no error, no result) (on Windows 10) string sLocalPath = "Q:"; string sRemotePath = "\\\\DESKTOP-EOPIFM5\\Windows 7"; using (var ps = PowerShell.Create()) { ps.AddCommand("New-SmbGlobalMapping"); ps.AddParameter("LocalPath", sLocalPath); ps.AddParameter("RemotePath", sRemotePath); ps.AddParameter("Credential", psCredential); //ps.AddParameter("RequireIntegrity", false); //ps.AddParameter("RequirePrivacy", false); try { System.Collections.ObjectModel.Collection<PSObject> collectionResults = ps.Invoke(); foreach (PSObject psObl in collectionResults) { Console.WriteLine("Status : {0}", psObl.Members["Status"].Value.ToString()); Console.WriteLine("Local Path : {0}", psObl.Members["LocalPath"].Value.ToString()); Console.WriteLine("Remote Path : {0}\n", psObl.Members["RemotePath"].Value.ToString()); } } catch (ParameterBindingException pbe) { System.Console.WriteLine("\rNew-SmbGlobalMapping error : {0}: {1}", pbe.GetType().FullName, pbe.Message); } } // To get and remove the test mapping in PowerShell : // Get-SmbGlobalMapping // Remove-SmbGlobalMapping -RemotePath "\\DESKTOP-EOPIFM5\Windows 7" -Force
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda