3

私はPowerShellの初心者です。

離れた場所にある共有フォルダにアクセスするためのユーザー名とパスワードを持っています。

現在の場所からPowershellv3.0用に作成されたPS1スクリプト内にファイルをコピーするfoo.txt 必要があります。\\Bar.foo.myCOmpany.com\logs

どうすればこれを達成できますか?

4

3 に答える 3

4

私はBITSを利用します。バックグラウンドインテリジェント転送サービス。

BitsTransferモジュールがセッションに実装されていない場合:

Import-Module BitsTransfer

クレデンシャルを使用してファイルを転送するためにそれを使用するサンプル:

$cred = Get-Credential()
$sourcePath = \\server\example\file.txt
$destPath = C:\Local\Destination\
Start-BitsTransfer -Source $sourcePath -Destination $destPath -Credential $cred

警告:RemotePSセッション内でスクリプトを実行している場合、BITSはサポートされていません。

Start-BitsTransferのGet-Help:

構文

 Start-BitsTransfer [-Source] <string[]> [[-Destination] <string[]>] [-Asynchronous] [-Authentication <string>] [-Credential <PS
Credential>] [-Description <string>] [-DisplayName <string>] [-Priority <string>] [-ProxyAuthentication <string>] [-ProxyBypass
 <string[]>] [-ProxyCredential <PSCredential>] [-ProxyList <Uri[]>] [-ProxyUsage <string>] [-RetryInterval <int>] [-RetryTimeou
t <int>] [-Suspended] [-TransferType <string>] [-Confirm] [-WhatIf] [<CommonParameters>]

さらにヘルプ...

ユーザー名/passwodの入力を求められないように$credオブジェクトを作成するスクリプトは次のとおりです。

    #create active credential object
    $Username = "user"
    $Password = ConvertTo-SecureString ‘pswd’ -AsPlainText -Force
    $cred = New-Object System.Management.Automation.PSCredential $Username, $Password
于 2012-11-05T20:46:52.180 に答える
4

Copy-Itemは-credentialパラメーターをサポートしていません。これはパラメーターを表示しますが、WindowsPowerShellコアコマンドレットまたはプロバイダーではサポートされていません。」

以下の関数を試して、ネットワークドライブをマップし、コピーを呼び出すことができます

Function Copy-FooItem {

param(
        [Parameter(Mandatory=$true,ValueFromPipeline=$True)]
        [string]$username,
        [Parameter(Mandatory=$true,ValueFromPipeline=$True)]
        [string]$password
        )

$net = New-Object -com WScript.Network
$drive = "F:"
$path = "\\Bar.foo.myCOmpany.com\logs"
if (test-path $drive) { $net.RemoveNetworkDrive($drive) }
$net.mapnetworkdrive($drive, $path, $true, $username, $password)
copy-item -path ".\foo.txt"  -destination "\\Bar.foo.myCOmpany.com\logs"
$net.RemoveNetworkDrive($drive)

}

ユーザー名とパスワードのパラメータを変更するだけで関数を実行する方法は次のとおりです

Copy-FooItem -username "powershell-enth\vinith" -password "^5^868ashG"
于 2012-11-06T05:20:52.580 に答える
1

あなたはで試すことができます:

copy-item -path .\foo.txt  -destination \remoteservername\logs -credential (get-credential)
于 2012-11-05T20:43:30.170 に答える