PowerShell Создать папку на удаленном сервере - PullRequest
10 голосов
/ 08 марта 2011

Следующий скрипт не добавляет папку на мой удаленный сервер. Вместо этого он помещает папку на Мой компьютер! Почему он это делает? Каков правильный синтаксис, чтобы добавить его?

$setupFolder = "c:\SetupSoftwareAndFiles"

$stageSrvrs | ForEach-Object {
  Write-Host "Opening Session on $_"
  Enter-PSSession $_

  Write-Host "Creating SetupSoftwareAndFiles Folder"

  New-Item -Path $setupFolder -type directory -Force 

  Write-Host "Exiting Session"

  Exit-PSSession

}

Ответы [ 4 ]

16 голосов
/ 08 марта 2011

Enter-PSSession может использоваться только в интерактивном удаленном сценарии. Вы не можете использовать его как часть блока скрипта. Вместо этого используйте Invoke-Command:

$stageSvrs | %{
         Invoke-Command -ComputerName $_ -ScriptBlock { 
             $setupFolder = "c:\SetupSoftwareAndFiles"
             Write-Host "Creating SetupSoftwareAndFiles Folder"
             New-Item -Path $setupFolder -type directory -Force 
             Write-Host "Folder creation complete"
         }
}
13 голосов
/ 08 мая 2014

UNC-путь также работает с New-Item

$ComputerName = "fooComputer"
$DriveLetter = "D"
$Path = "fooPath"
New-Item -Path \\$ComputerName\$DriveLetter$\$Path -type directory -Force 
1 голос
/ 18 сентября 2013

Для тех, кто -ScriptBlock не работает, вы можете использовать это:

$c = Get-Credential -Credential 
$s = $ExecutionContext.InvokeCommand.NewScriptBlock("mkdir c:\NewDir")
Invoke-Command -ComputerName PC01 -ScriptBlock $s -Credential $c
0 голосов
/ 09 мая 2018

Следующий код создаст новую папку на удаленном сервере, используя имя сервера, указанное в $server.В приведенном ниже коде предполагается, что учетные данные хранятся в MySecureCredentials и настраиваются заранее.Просто позвоните createNewRemoteFolder "<Destination-Path>", чтобы создать новую папку.

function createNewRemoteFolder($newFolderPath) {

    $scriptStr = "New-Item -Path $newFolderPath -type directory -Force"
    $scriptBlock = [scriptblock]::Create($scriptStr)

    runScriptBlock $scriptBlock
}


function runScriptBlock($scriptBlock) {

    Invoke-Command -ComputerName $server -Credential $MySecureCreds -ScriptBlock $scriptBlock
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...