[英]Calling function from different file in PowerShell
我做了很多谷歌搜索,但沒有找到解決我問題的方法。 我正在重建我們為 ServiceDesk 工作的工具,但遇到了問題。
我使用帶有開關塊的菜單和子菜單。 菜單本身是同一文件中的函數。 然而,除了子菜單的“編號”之外,我還設置了一些其他命令作為我想要工作的功能。 我嘗試在同一文檔中的開關上方聲明函數,並嘗試使用不同的文件來調用這些函數,但我無法使其工作。
Function sys
{
Param (
[string]$computer
)
systeminfo /s $computer
}
# Visa huvudmeny
Function ShowMenu
{
Write-Host "
Kommandon:
1 - Alternativ för datorer
2 - Alternativ för användare
3 - Övriga alternativ
"
}
# Visa Datorer-meny
Function subComputer
{
Write-Host "
Kommandon:
rem [datornamn] - se vem som är inloggad, tryck på y för att koppla upp dig
rdp [datornamn] - Starta rdp och koppla upp mot dator
rc [datornamn] - mappa upp användarens dator
mac [datornamn] - hämta datorns MAC-adress sys [datornamn] - se information om datorn/systemet
update [datornamn] - kör GPUpdate /force på användarens FMAP
reboot [datornamn] - Starta om användarens FMAP
ping [datornamn] - pinga användares dator
pingt [datornamn] - pinga användares dator (pingsnurra), avbryt med Ctrl-C
q - tillbaka till huvudmenyn
"
}
# Visa Användare-meny
Function subUser
{
Write-Host "
Kommandon:
password - starta lösenordsgeneratorn
q - tillbaka till huvudmenyn
"
}
# Visa Övrigt-meny
Function subMisc
{
Write-Host "
Kommandon:
remlog - Visa loggfilen för rem
rdplog - Visa loggfilen för rdp
archive - Arkivera loggfilerna
gw - öppna fönstret för att kunna pinga gateway
password - starta lösenordsgeneratorn
q - tillbaka till huvudmenyn
"
}
do
{
Clear-Host
ShowMenu
$menuItem = Read-Host
switch($menuItem)
{
"1"
{
do{
Clear-Host
subComputer
$subComputer = Read-Host
switch($subComputer)
{
"1"{subComputer}
"2"{subUser}
"3"{subMisc}
}
}
until ($subComputer -eq "q")
}
"2"
{
do{
Clear-Host
subUser
$subUser = Read-Host
switch($subUser)
{
"1"{subComputer}
"2"{subUser}
"3"{subMisc}
}
}
until ($subUser -eq "q")
}
"3"
{
do{
Clear-Host
subMisc
$subMisc = Read-Host
switch($subMisc)
{
"1"{subComputer}
"2"{subUser}
"3"{subMisc}
}
}
until ($subMisc -eq "q")
}
default{. 'C:\Temp\SDV 4.2 Lite\WindowsPowerShell\moduler\func.ps1'}
}
}
until ($menuItem -eq "q")
現在我已將外部函數文件放在默認值中,但這不起作用。 我不知道把它放在哪里讓它調用我的其他函數。 它可以毫無問題地接受 1、2、3 和 q。
您需要在代碼到達需要調用函數的位置之前對func.ps1
文件進行點源化 - 在進入循環之前執行此操作可能是您想要的:
# dot-source function definitions, discard any output from the script itself
$null = . 'C:\Temp\SDV 4.2 Lite\WindowsPowerShell\moduler\func.ps1'
do
{
# ...
}until($menuItem -eq "q")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.