小编Pat*_*ick的帖子

NET USE仅在powershell中运行一次

我的要求是连接到远程计算机,将文件扩展名复制.TRA到另一台远程计算机.

现在我的困难在于源计算机不在域上,所以我需要连接备用凭据.

我的第一个关键点是试图使用New-PSDrive.它似乎不允许我传递存储的凭据.我试过各种版本:

$cred = Get-Credential
New-PSDrive -NAME Z: -PSprovider Filesystem -root \\Computer\Exchange -credentials $cred
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

提供程序不支持使用凭据.无需指定凭据即可再次执行操作.

这似乎是一个错误(请参阅halr9000的评论:在Powershell中使用用户名/密码连接到网络文件夹)

我的替代方案是使用NET USE,它工作正常但只有一次.

在下面的完整脚本中,我映射到8台不同的机器.第一部作品.之后,任何尝试使用NET USE(或New-Object WScript.NETWORK在上面链接的Technet文章中提到的解决方法)都会失败.或者说它不会失败.

它创建了一个映射驱动器,如果我输入NET USE,我可以看到,或者如果我查看资源管理器(及其浏览器).但我无法连接到Powershell中的那个驱动器.它就像它不存在一样,Test-Path Z:返回False.直到我运行NET USE Z: /D成功删除驱动器.

有人可以帮我解决一个或其他问题吗?不要让我在DOS中这样做!

完整脚本:

$int = 0
$arrStagePC = "BOX42", "BOX43", "BOX44", "BOX45", "BOX46", "BOX47", "BOX48", "BOX49" 
$arrData = "0848","5144","5292","5383","2158","2646","0061","2331"
Foreach($strComp in $arrStagePC)
    {
    $arr = $arrData[$int]
    $comp = $strComp
    net use z: \\$arr\Exchange /user:admin …
Run Code Online (Sandbox Code Playgroud)

powershell

3
推荐指数
2
解决办法
2万
查看次数

条件逻辑不再按预期工作?

这是漫长的一天,我想我会发疯.我想测试一个文件,如果不存在则生成一封电子邮件.在这里它被削减到最小:

> IF('False' -eq (Test-Path D:\Scripts\SFTP\Import\*)){ECHO "SEND EMAIL"}
> SEND EMAIL

__________________________________________________________________________
> IF((Test-Path D:\Scripts\SFTP\Import\*) -eq 'False'){ECHO "SEND EMAIL"}
> 
Run Code Online (Sandbox Code Playgroud)

为什么第二个命令不起作用?

我已经尝试Test-Path将'IF'语句的外部运行到一个变量中然后对其进行测试,它再次无效.

如果我只是运行'Test-Path'命令,我会按预期得到一个布尔值'False'.我之前以这种方式使用过条件逻辑并且它有效.

我究竟做错了什么?

powershell logic

2
推荐指数
1
解决办法
222
查看次数

标签 统计

powershell ×2

logic ×1