正如标题所说,如果我尝试添加-persist
到 cmdlt,它会返回一个错误:
New-PSDrive : The network resource type is not correct
At line:1 char:1
+ New-PSDrive -Name P -Root <redacted> ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (P:PSDriveInfo) [New-PSDrive], Win32Exception
+ FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
作为参考,这是 PowerShell 中的管理员会话,但如果我在常规用户会话中执行此操作,我会得到完全相同的响应:
PS> $PSVersionTable.psversion
Major Minor Build Revision
----- ----- ----- --------
5 1 16299 666
Run Code Online (Sandbox Code Playgroud)
从一开始:我验证我要使用的驱动器号是否可用(在本例中为 P)
PS> get-psdrive
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
Alias Alias
C 36.80 22.11 FileSystem C:\ windows\system32
Cert …
Run Code Online (Sandbox Code Playgroud) powershell windows-scripting drive-mapping powershell-v5.1 new-psdrive
我正在编写 ac# cmdlet,它将文件从一个位置复制到另一个位置(类似于 rsync)。它甚至支持 ToSession 和 FromSession。
我希望它能够与使用文件系统提供程序的 PSDrive 一起使用,但它当前会从 System.IO.File.GetAttributes("psdrive:\path") 引发错误
我真的很想在 PSDrive 上使用来自 System.IO 的调用。
像 copy-item 这样的东西是如何做到这一点的?
我已经执行了从 c# 访问 PSDrive 的搜索,但没有返回任何结果。
这相当于我的代码
new-psdrive -name mydrive -psprovider filesystem -root \\aserver\ashare -Credential domain\user
$attributes=[system.io.file]::GetAttributes("mydrive:\path\")
Run Code Online (Sandbox Code Playgroud)
回报
Exception calling "GetAttributes" with "1" argument(s): "The given path's format is not supported."
Run Code Online (Sandbox Code Playgroud) 今天,我在 Powershell 5.1 中使用制表符自动完成功能来输入变量名称,并注意到其中一个选项是 PSDrive 的名称。驱动器名称是docs
,我想要扩展的驱动器名称是$document_name
。当我输入 时$do<tab>
,shell 确实扩展了我输入的内容$document_name
,但由于某种原因,我第二次输入<tab>
,此时扩展的文本更改为$docs:
。
我进一步探索并发现我的每个 PSDrive 都存在这种类型的变量,或者至少选项卡扩展表明它确实存在。
\n\n更正式地说,对于每个 PSDrive PSD,选项卡扩展都认为这$PSD:
是有效的事情。
我的问题很简单:这些到底是什么?以下是我迄今为止所做的一些观察:
\n\n$
,因此它们看起来像 PS 变量。对于本次讨论的其余部分(以及上面前面的讨论),我将假设它们是变量并这样引用它们。Variable:
像大多数变量一样列在 PSDrive 中。这样,它的行为就像$env
“变量”,也没有在 中列出Variable:
。我有一种感觉,如果我能找到有关 的文档$env
,那么我也会理解这些对象。readme.txt
包含文本“Hello, world!” 在名为 的 PSDrive 上code
,则以下所有内容都可能与 Powershell 交互。获取文件的内容。
\n\n\xce\xbb ${code:\\readme.txt}\nHello, world!\n
Run Code Online (Sandbox Code Playgroud)\n\n只是为了证明上面结果的类型是String
: