如何在 New-PSDrive 中使用变量?
How to use a variable with New-PSDrive?
我正在编写一个小脚本来映射和重命名网络驱动器。我想在驱动器盘符中使用变量(用户输入),但出于某种原因,脚本只接受静态驱动器盘符。请帮忙
$button_click_2 = { Remove-PSDrive -Name K -Force
New-PSDrive -Name $textBox -PSProvider FileSystem -Root "\192.168.0.10\GRY" -Persist -Scope Global
$shell = New-Object -ComObject Shell.Application
$letter = -join($textBox,":")
$shell.NameSpace("$letter").Self.Name = "Test Oliego 3"
}
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(240,20)
$form.Controls.Add($textBox)
$test_button = New-Object System.Windows.Forms.Button
$test_button.Location = New-Object System.Drawing.Size(200,420)
$test_button.Size = New-Object System.Drawing.Size (170,23)
$test_button.Text = "Mapowanie Dysku Sieciowego"
$test_button.Add_Click($button_click_2)
$form.Controls.AddRange(@($test_button,$textBox))
错误信息如下
New-PSDrive : Cannot process the drive name because the drive name
contains one or more of the
following characters that are not valid: ; ~ / \ . :
At C:\Users\Axel\Desktop\TESTY\Szmery Bajery.ps1:9 char:21
+ ... New-PSDrive -Name $textBox -PSProvider FileSystem -Root " ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-PSDrive], PSArgumentException
+ FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.NewPSDriveCommand
The property 'Name' cannot be found on this object. Verify that the property exists and can be set.
At C:\Users\Axel\Desktop\TESTY\Szmery Bajery.ps1:12 char:21
+ ... $shell.NameSpace("$letter").Self.Name = "Test Oliego 3"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound
永久性驱动器必须以字母命名。
-Name
参数说明:
指定新驱动器的名称。对于持久映射网络驱动器,请使用驱动器号。对于临时 PowerShell 驱动器,您不限于驱动器号,使用任何有效的字符串。
在此处检查 -Persist
参数 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-psdrive?view=powershell-5.1#parameters
对于那些感兴趣的人。这就是我想出的,它就像一个魅力
$button_click_2 = { $letter = -join($textBox.Text,":")
Invoke-Expression "C:\Windows\System32\net.exe use $letter \PATH /persistent:yes"
$shell = New-Object -ComObject Shell.Application
$shell.NameSpace("$letter").Self.Name = "Test Oliego 3"
}
我正在编写一个小脚本来映射和重命名网络驱动器。我想在驱动器盘符中使用变量(用户输入),但出于某种原因,脚本只接受静态驱动器盘符。请帮忙
$button_click_2 = { Remove-PSDrive -Name K -Force
New-PSDrive -Name $textBox -PSProvider FileSystem -Root "\192.168.0.10\GRY" -Persist -Scope Global
$shell = New-Object -ComObject Shell.Application
$letter = -join($textBox,":")
$shell.NameSpace("$letter").Self.Name = "Test Oliego 3"
}
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(240,20)
$form.Controls.Add($textBox)
$test_button = New-Object System.Windows.Forms.Button
$test_button.Location = New-Object System.Drawing.Size(200,420)
$test_button.Size = New-Object System.Drawing.Size (170,23)
$test_button.Text = "Mapowanie Dysku Sieciowego"
$test_button.Add_Click($button_click_2)
$form.Controls.AddRange(@($test_button,$textBox))
错误信息如下
New-PSDrive : Cannot process the drive name because the drive name contains one or more of the following characters that are not valid: ; ~ / \ . : At C:\Users\Axel\Desktop\TESTY\Szmery Bajery.ps1:9 char:21 + ... New-PSDrive -Name $textBox -PSProvider FileSystem -Root " ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [New-PSDrive], PSArgumentException + FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.NewPSDriveCommand
The property 'Name' cannot be found on this object. Verify that the property exists and can be set. At C:\Users\Axel\Desktop\TESTY\Szmery Bajery.ps1:12 char:21 + ... $shell.NameSpace("$letter").Self.Name = "Test Oliego 3" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyNotFound
永久性驱动器必须以字母命名。
-Name
参数说明:
指定新驱动器的名称。对于持久映射网络驱动器,请使用驱动器号。对于临时 PowerShell 驱动器,您不限于驱动器号,使用任何有效的字符串。
在此处检查 -Persist
参数 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-psdrive?view=powershell-5.1#parameters
对于那些感兴趣的人。这就是我想出的,它就像一个魅力
$button_click_2 = { $letter = -join($textBox.Text,":")
Invoke-Expression "C:\Windows\System32\net.exe use $letter \PATH /persistent:yes"
$shell = New-Object -ComObject Shell.Application
$shell.NameSpace("$letter").Self.Name = "Test Oliego 3"
}