1

Invoke-Commandを使用して、リモートコンピューターにネットワークドライブをマッピングしようとしています。

Invoke-Command -ComputerName servername -ScriptBlock { net use L: \\server\folder password /user:login}

しかし、それは機能しません。SimpleNETUSEも機能しません。Powershellも試しました:ネットワークドライブを別のユーザー名/パスワードでマップする方法

では、リモートコンピュータで「cmdコマンド」NETUSEを実行するにはどうすればよいでしょうか。または、PowerShellを使用してネットワークドライブをマッピングする方法は?ありがとうございました

編集

使うとき

Invoke-Command -ComputerName servername -ScriptBlock { (New-Object -ComObject WScript.Network).MapNetworkDrive 
("M:", "\\server\folder", $false, "login", "password") }

以下を使用してリモートコンピュータからのみ表示される「シャドウ」ディスクを作成します。

Invoke-Command -ComputerName servername -ScriptBlock { NET USE }

次を使用して削除できます。

Invoke-Command -ComputerName servername -ScriptBlock { NET USE /d /y M: }

しかし、そのリモートサーバーに接続したときに表示されるマップされたディスクを表示、削除、または追加できません:(

4

3 に答える 3

1

スケジュールされたタスクを使用してそれを行う必要がありました。

マッピング テキストを含む標準のバッチ ファイルを作成します。

`

net use R: /Delete /y
net use R: "\\SERVERNAME\R" /persistent:yes
net use S: /Delete /y
net use S: "\\SERVERNAME\S" /persistent:yes

`

Scheduled Taks ジョブ情報を使用して XML を作成する

`

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2016-03-12T14:19:18.8527017</Date>
    <Author>DOMAIN\USER</Author>
  </RegistrationInfo>
  <Triggers />
  <Principals>
    <Principal id="Author">
      <GroupId>S-1-5-32-544</GroupId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>I:\Scripts\Schedualed Taks XML\Maps.bat</Command>
    </Exec>
  </Actions>
</Task>

`

バッチ ファイルを使用してタスクを作成する (schtasks.exe)

`

@echo off
if exist "exists.txt" del "exists.txt"
for /F %%A in (SNL.txt) do (

Echo %%A

schtasks.exe /create /f /tn "Map Drives" /XML "I:\Scripts\Schedualed Taks XML\DriveMaps.xml" /s %%A


)
pause

`

注: SNL.txt は、タスクをクレートするコンピューターのリストです。

次に、バッチ ファイルを使用してタスクを実行します(必要に応じて、この 1 つのバッチ ファイルを作成できます)。

`

@echo off
if exist "exists.txt" del "exists.txt"
for /F %%A in (SNL.txt) do (

Echo %%A

schtasks.exe /run /s %%A /tn "Map Drives" 

)

Pause

`

于 2016-10-13T04:38:25.710 に答える
0

この記事によると、CredSSP なしでは不可能ですか? 私は同じことをしようとしています=(

于 2013-11-27T19:50:53.500 に答える
0

これを試して:

Invoke-Command -ComputerName servername -ScriptBlock {
  (New-Object -ComObject WScript.Network).MapNetworkDrive(
      "L:", "\\server\share", $false, "login", "password"
    )
}

編集:次のコマンドを実行すると

Invoke-Command -ComputerName ServerB -ScriptBlock {
  (New-Object -ComObject WScript.Network).MapNetworkDrive(
      "L:", "\\ServerC\share", $true, "DOMAIN\UserB", "password"
    )
}

のようDOMAIN\UserAに、ドライブとして問題ServerAなく接続します。次にとしてログインすると、ドライブは表示されますが、すべてのネットワーク ドライブを再接続できるわけではないという警告が表示されます。UserA と UserB は異なるパスワードを持っているため、これは当然のことです。ドライブをクリックすると、システムは DOMAIN\UserB の資格情報を要求し、パスワードを入力すると、問題なく共有にアクセスできます。\\ServerC\shareL:ServerBServerBDOMAIN\UserA

于 2012-09-13T14:06:07.740 に答える